From 439bc327f0355be7d9f7638d89c448cd78fe5493 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Sun, 20 Nov 2005 21:21:30 +0000 Subject: [PATCH] Big gui update: - new dialog for format options - added CET features - added possibility to write data to screen - any "look and feel" changes --- gpsbabel/win32/gui-2/GPSBabelGUI.dof | 20 +- gpsbabel/win32/gui-2/GPSBabelGUI.dpr | 16 +- gpsbabel/win32/gui-2/GPSBabelGUI.res | Bin 1788 -> 1828 bytes gpsbabel/win32/gui-2/about.dfm | Bin 3330 -> 3499 bytes gpsbabel/win32/gui-2/about.pas | 33 +- gpsbabel/win32/gui-2/common.pas | 285 ++++-- gpsbabel/win32/gui-2/filter.dfm | Bin 7811 -> 7844 bytes gpsbabel/win32/gui-2/filter.pas | 156 ++-- .../gui-2/locale/de/LC_MESSAGES/default.po | 830 ++++++++---------- .../gui-2/locale/fr/LC_MESSAGES/default.po | 828 ++++++++--------- gpsbabel/win32/gui-2/main.dfm | Bin 24235 -> 36702 bytes gpsbabel/win32/gui-2/main.pas | 737 +++++++++++++--- gpsbabel/win32/gui-2/readme.dfm | Bin 652 -> 687 bytes gpsbabel/win32/gui-2/readme.pas | 15 +- gpsbabel/win32/gui-2/utils.pas | 75 +- 15 files changed, 1780 insertions(+), 1215 deletions(-) diff --git a/gpsbabel/win32/gui-2/GPSBabelGUI.dof b/gpsbabel/win32/gui-2/GPSBabelGUI.dof index a470b1fb6..3c4b21a32 100644 --- a/gpsbabel/win32/gui-2/GPSBabelGUI.dof +++ b/gpsbabel/win32/gui-2/GPSBabelGUI.dof @@ -56,10 +56,10 @@ IncludeVerInfo=1 AutoIncBuild=0 MajorVer=0 MinorVer=2 -Release=1 -Build=6 -Debug=0 -PreRelease=1 +Release=2 +Build=11 +Debug=1 +PreRelease=0 Special=0 Private=0 DLL=0 @@ -68,17 +68,11 @@ CodePage=1252 [Version Info Keys] CompanyName=GPSBabel Makers FileDescription=GPSBabel Windows Frontend -FileVersion=0.2.1.6 +FileVersion=0.2.2.11 InternalName=GPSBabelGUI-2 LegalCopyright=(C) 2005 Olaf Klein (O.B.Klein@T-Online.de) LegalTrademarks= OriginalFilename=GPSBabelGUI.exe ProductName=GPSBabel -ProductVersion=1.2.8-beta11012005 -Comments= -[HistoryLists\hlConditionals] -Count=1 -Item0=MSWINDOWS -[HistoryLists\hlUnitAliases] -Count=1 -Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +ProductVersion=1.2.8-beta11102005 +Comments=internal test build diff --git a/gpsbabel/win32/gui-2/GPSBabelGUI.dpr b/gpsbabel/win32/gui-2/GPSBabelGUI.dpr index c9546bee8..dd78f1bde 100644 --- a/gpsbabel/win32/gui-2/GPSBabelGUI.dpr +++ b/gpsbabel/win32/gui-2/GPSBabelGUI.dpr @@ -19,7 +19,6 @@ program GPSBabelGUI; uses gnugettext in 'gnugettext.pas', - gnugettextD4 in 'gnugettextD4.pas', Windows, SysUtils, classes, @@ -29,19 +28,24 @@ uses common in 'common.pas', filter in 'filter.pas' {frmFilter}, about in 'about.pas' {frmAbout}, - readme in 'readme.pas' {frmReadme}; + readme in 'readme.pas' {frmReadme}, + options in 'options.pas' {frmOptions}; {$R *.RES} +var + lang: string; + begin AddDomainForResourceString('delphi'); - + lang := ReadProfile('Global:Language', ''); + if (lang <> '') then + UseLanguage(lang); +{$IFOPT D+} // UseLanguage('fr'); // for testing - +{$ENDIF} Application.Initialize; Application.CreateForm(TfrmMain, frmMain); Application.CreateForm(TfrmReadme, frmReadme); - Application.CreateForm(TfrmFilter, frmFilter); - Application.CreateForm(TfrmAbout, frmAbout); Application.Run; end. diff --git a/gpsbabel/win32/gui-2/GPSBabelGUI.res b/gpsbabel/win32/gui-2/GPSBabelGUI.res index 2c8be76a22fb91c1bf9b539030c1a70835fe2f98..cb0bb8b0a18900beaf4d3777e0860c7718ddc6d3 100644 GIT binary patch delta 142 zcmeyvyM%8;4m0D7$+^t(K(d$FSdg262?!Y&K(sxOW}JMHS)B35HEy&l=$v-rN!9ZXJ??gd)jzmW0ko*GXPZKQ;@^E>lRt6NMmSv`v zb58teC(h}g2NZG1FVAD=cFQlyg>p8VGxD)=u!p4<6=&w>Z4P8(WUFTnaVjk-$HEy&l=$v-rN!9d_W&qP6a4hJUYko*GX?-MN!PG)7a+Z@Hn$I8PU YmReMtnV+X%pl7tXfQ^xD@^79E0H|9OPyhe` diff --git a/gpsbabel/win32/gui-2/about.pas b/gpsbabel/win32/gui-2/about.pas index fa04d95d5..a92dba090 100644 --- a/gpsbabel/win32/gui-2/about.pas +++ b/gpsbabel/win32/gui-2/about.pas @@ -21,9 +21,9 @@ unit about; interface uses - gnugettextD4, + gnugettextDx, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, Buttons, ExtCtrls, ShellApi, + StdCtrls, Buttons, ExtCtrls, common; type @@ -43,12 +43,16 @@ type lbCopyRight: TLabel; lbMoreInfo: TLabel; lbSFURL: TLabel; + btnNewLanguage: TButton; procedure FormCreate(Sender: TObject); procedure lbURLMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure pnCenterMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure lbURLClick(Sender: TObject); + procedure FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure btnNewLanguageClick(Sender: TObject); private { Private declarations } FTitle: string; @@ -69,7 +73,7 @@ uses procedure TfrmAbout.FormCreate(Sender: TObject); begin - gnugettextD4.TranslateComponent(SELF); + TranslateComponent(SELF); FTitle := Caption; Caption := FTitle + ' ' + SGPSBabelTitle; @@ -82,6 +86,7 @@ begin lbxTranslators.Items.Add(_('German by Olaf Klein')); lbxTranslators.Items.Add(_('French by Lilian Morinon')); + end; procedure TfrmAbout.lbURLMouseMove(Sender: TObject; Shift: TShiftState; X, @@ -106,12 +111,26 @@ begin end; procedure TfrmAbout.lbURLClick(Sender: TObject); -var - url: string; begin TLabel(Sender).Font.Color := clBlue; - url := 'http://' + TLabel(Sender).Caption; - ShellExecute(Self.Handle, 'open', PChar(url), nil, '', 0); + WinOpenFile('http://' + TLabel(Sender).Caption); +end; + +procedure TfrmAbout.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (Key = 27) then + ModalResult := mrOK; +end; + +procedure TfrmAbout.btnNewLanguageClick(Sender: TObject); +begin + ShowMessage( + _('Please have a look at the file README.GUI.'#13#10#10 + + 'There you will find all information you need to'#13#10 + + 'get GPSBabelGUI working in your own language.') + ); end; end. + \ No newline at end of file diff --git a/gpsbabel/win32/gui-2/common.pas b/gpsbabel/win32/gui-2/common.pas index 8d29e6368..185789742 100644 --- a/gpsbabel/win32/gui-2/common.pas +++ b/gpsbabel/win32/gui-2/common.pas @@ -21,18 +21,27 @@ unit common; interface uses - Windows, SysUtils, Classes, Messages; + Windows, SysUtils, Classes, Messages, Controls, StdCtrls; +const + OTypes: array[0..6] of PChar = + ('unknown', 'integer', 'float', 'string', 'boolean', 'file', 'outfile'); + resourcestring SGPSBabelURL = 'http://www.gpsbabel.org'; SGPSBabelTitle = 'GPSBabelGUI-2'; var + gpsbabel_exe: string; + gpsbabel_version: string; // 1.101.010-beta... + gpsbabel_vfmt: string; // 001.101.010 + gpsbabel_minor, gpsbabel_major, gpsbabel_release: Integer; SGPSBabelGUIVersion: string; CFixedFileinfo: TVSFixedFileInfo; const WM_STARTUP = WM_USER + 1; + WM_OPTIONS_CHANGED = WM_USER + 2; const SREG_TARGET_DIR = 'Target:Directory'; @@ -74,6 +83,37 @@ type end; type + TOption = record + format: string; + name: string; + hint: string; + otype: Byte; + def: PChar; + min: PChar; + max: PChar; + chb: TCheckBox; + edit: TControl; + end; + POption = ^TOption; + +type + TCapabilities = class; + + TOptions = class(TStringList) + private + FCaps: TCapabilities; + procedure SetList(const Value: TStrings); + protected + public + constructor Create(ACapabilities: TCapabilities); + procedure AddOptionLine(const ALine: string); + procedure DebugGetHints(List: TStringList); + function FormatOpts(const Descr: string): TStringList; + function HasFormatOpts(const Format: string): Boolean; + property + List: TStrings write SetList; + end; + TCapabilities = class(TStringList) private FList: TStrings; @@ -96,11 +136,189 @@ type type eGPSBabelError = class(Exception); -var - gpsbabel_exe: string; +function atoi(str: PChar): Integer; implementation +function atoi(str: PChar): Integer; +begin + Result := 0; + while (str^ <> #0) do + begin + if ((str^ < '0') or (str^ > '9')) then Break; + Result := (Result * 10) + (Ord(str^) - Ord('0')); + str := str + 1; + end; +end; + +function GetFileVersion(const Filename: string): string; +var + buff: PChar; + hdl: DWORD; + len: DWORD; + sub: PChar; + sublen: UINT; + fix: PVSFixedFileInfo; + i: Integer; +begin + Result := '?.?'; + + FillChar(CFixedFileinfo, SizeOf(CFixedFileinfo), #0); + + len := GetFileVersionInfoSize(PChar(Filename), hdl); + if not(len > 0) then exit; + + GetMem(buff, len); + try + + if not GetFileVersionInfo(PChar(FileName), 0, len, buff) then Exit; + + fix := Pointer(buff); + i := len - SizeOf(fix^); + while (i > 0) do + begin + Dec(i); + if (fix.dwSignature = $feef04bd) then + begin + CFixedFileinfo := fix^; + Break; + end; + PChar(fix) := PChar(fix) + 1; + end; + + if not VerQueryValue(buff, PChar('\\StringFileInfo\\040904E4\\FileVersion'), + Pointer(sub), sublen) then Exit; + if not(sublen > 0) then Exit; + Result := string(sub); + finally + FreeMem(buff); + end; +end; + +{ TOptions } + +constructor TOptions.Create(ACapabilities: TCapabilities); +begin + inherited Create; + FCaps := ACapabilities; + Sorted := False; +end; + +procedure TOptions.AddOptionLine(const ALine: string); +var + buff: array[0..1023] of Char; + cin, cend: PChar; + index: Integer; + opt: POption; + list: TStringList; + i: Integer; +begin + StrPCopy(buff, ALine); + StrCat(buff, #9); + + cin := @buff; + index := 0; + while (true) do + begin + cend := StrScan(cin, #9); + if (cend = nil) then break; + cend^ := #0; + + case index of + 0: + if (StrIComp(cin, 'option') <> 0) then + Exit else + begin + New(opt); + FillChar(opt^, SizeOf(opt^), #0); + end; + 1: + opt.format := string(cin); + 2: + opt.name := string(cin); + 3: + opt.hint := string(cin); + 4: + for i := 0 to high(OTypes) do + if (StrIComp(cin, OTypes[i]) = 0) then + begin + opt.otype := i; + Break; + end; + 5: + if (cin^ <> #0) then + opt.def := StrNew(cin); + 6: + if (cin^ <> #0) then + opt.min := StrNew(cin); + 7: + if (cin^ <> #0) then + opt.max := StrNew(cin); + end; + + index := index + 1; + cin := cend + 1; + end; + + index := Self.IndexOf(opt.format); + if (index >= 0) then + list := TStringList(Self.Objects[index]) + else begin + list := TStringList.Create; + list.Sorted := True; + Self.AddObject(opt.format, list); + end; + list.AddObject(opt.name, Pointer(opt)); +end; + +procedure TOptions.DebugGetHints(List: TStringList); +var + i, j, k: Integer; + l: TStrings; + o: POption; +begin + List.Clear; + List.Sorted := True; + for i := 0 to Count - 1 do + begin + l := Pointer(Objects[i]); + for j := 0 to l.Count - 1 do + begin + o := Pointer(l.Objects[j]); + k := List.IndexOf(o.hint); + if (k < 0) then + List.Add(o.hint); + end; + end; +end; + +function TOptions.FormatOpts(const Descr: string): TStringList; +var + i: Integer; + s: string; +begin + s := FCaps.GetName(Descr); + if (s <> '') and Self.Find(s, i) then + Result := TStringList(Self.Objects[i]) + else + Result := nil; +end; + +function TOptions.HasFormatOpts(const Format: string): Boolean; +begin + Result := (FormatOpts(Format) <> nil); +end; + +procedure TOptions.SetList(const Value: TStrings); +var + i: Integer; +begin + Clear; + for i := 0 to Value.Count - 1 do + AddOptionLine(Value[i]); + Sorted := True; +end; + { TCapabilities } procedure TCapabilities.AddFormat(const Line: string); @@ -115,7 +333,7 @@ var comment: string; name: string; internal: string; - + caps: Integer; info: PFileInfo; @@ -134,10 +352,17 @@ begin cend^ := #0; case index of - 0: internal := StrPas(cin); - 1: scaps := StrPas(cin); - 2: name := StrPas(cin); - 3: ext := StrPas(cin); + 0: + if (StrIComp(cin, 'option') = 0) then + Exit + else + internal := StrPas(cin); + 1: + scaps := StrPas(cin); + 2: + name := StrPas(cin); + 3: + ext := StrPas(cin); else begin comment := StrPas(cin); @@ -275,50 +500,6 @@ begin end; end; -function GetFileVersion(const Filename: string): string; -var - buff: PChar; - hdl: DWORD; - len: DWORD; - sub: PChar; - sublen: UINT; - fix: PVSFixedFileInfo; - i: Integer; -begin - Result := '?.?'; - - FillChar(CFixedFileinfo, SizeOf(CFixedFileinfo), #0); - - len := GetFileVersionInfoSize(PChar(Filename), hdl); - if not(len > 0) then exit; - - GetMem(buff, len); - try - - if not GetFileVersionInfo(PChar(FileName), 0, len, buff) then Exit; - - fix := Pointer(buff); - i := len - SizeOf(fix^); - while (i > 0) do - begin - Dec(i); - if (fix.dwSignature = $feef04bd) then - begin - CFixedFileinfo := fix^; - Break; - end; - PChar(fix) := PChar(fix) + 1; - end; - - if not VerQueryValue(buff, PChar('\\StringFileInfo\\040904E4\\FileVersion'), - Pointer(sub), sublen) then Exit; - if not(sublen > 0) then Exit; - Result := string(sub); - finally - FreeMem(buff); - end; -end; - initialization gpsbabel_exe := SysUtils.ExtractFilePath(ParamStr(0)) + 'gpsbabel.exe'; diff --git a/gpsbabel/win32/gui-2/filter.dfm b/gpsbabel/win32/gui-2/filter.dfm index 85071d6725adf71113802855f4a59638d8013883..8c836e9dc44cc33a7a11b5e8caa3fc1f15405604 100644 GIT binary patch delta 96 zcmZp+U1BTvpNk>HEy&l+(HEy&l+( mrOK) then Exit; - - Result := False; - s := Trim(AEdit.Text); - if (s = '') then s := '0'; - while (Pos(',', s) <> 0) do - s[Pos(',', s)] := '.'; - - AEdit.Text := s; - - try - v := SysUtils.StrToFloat(s); - except - on E: EConvertError do - begin - AEdit.SetFocus; - raise; - end; - end; - - if (v < AMin) or (v > AMax) then - begin - AEdit.SetFocus; - raise eOutOfRange.CreateFmt(_('Value (%s) out of range (%g to %g)!'), - [s, AMin, AMax]); - end; - Result := True; -end; - -procedure TfrmFilter.cbTrackTimeClick(Sender: TObject); -begin - EnableList(lTrackTimeList, cbTrackTime.Checked); -end; - -procedure TfrmFilter.EnableList(List: TList; Enable: Boolean); +procedure EnableAll(Parent: TWinControl; Enable: Boolean); var i: Integer; - o: TObject; + c: TComponent; + master: TComponent; + ctrl: TControl; begin - for i := 0 to List.Count - 1 do + if (Parent = nil) then Exit; + master := Parent.Owner; + if (master = nil) then Exit; + for i := 0 to master.ComponentCount - 1 do begin - o := Pointer(List.Items[i]); - if (o is TControl) then - with o as TControl do - Enabled := Enable; + c := master.Components[i]; + if not(c.InheritsFrom(TControl)) then Continue; + ctrl := Pointer(c); + if not(ctrl.Parent = Parent) then Continue; + ctrl.Enabled := Enable; end; end; +{ TfrmFilter } + procedure TfrmFilter.FormCreate(Sender: TObject); var CurrentTime: TDateTime; begin - gnugettextD4.TranslateComponent(SELF); + TranslateComponent(SELF); CurrentTime := SysUtils.Now; dtpTrackStartDate.DateTime := Int(CurrentTime); @@ -234,6 +205,71 @@ begin cobWayptRadius.ItemIndex := 0; dtpTrackStopTime.Time := 1 - (1.0 / (24*60*60)); + + // Enable/Disable depending on gpsbabel.exe version + + if (common.gpsbabel_vfmt < '001.002.007') then + begin + EnableAll(gbTracks, False); + gbTracks.Hint := Format(_('Not supported by gpsbabel.exe, release %s!'), [ + gpsbabel_version]); + gbTracks.ShowHint := True; + end; +end; + +function TfrmFilter.ValidateNumerical(AEdit: TCustomEdit; AMin, AMax: Extended): Boolean; +var + s: string; + v: Extended; +begin + Result := True; + if not(AEdit.Enabled) then Exit; + if (ModalResult <> mrOK) then Exit; + + Result := False; + s := Trim(AEdit.Text); + if (s = '') then s := '0'; + while (Pos(',', s) <> 0) do + s[Pos(',', s)] := '.'; + + AEdit.Text := s; + + try + v := SysUtils.StrToFloat(s); + except + on E: EConvertError do + begin + AEdit.SetFocus; + raise; + end; + end; + + if (v < AMin) or (v > AMax) then + begin + AEdit.SetFocus; + raise eOutOfRange.CreateFmt(_('Value (%s) out of range (%g to %g)!'), + [s, AMin, AMax]); + end; + Result := True; +end; + +procedure TfrmFilter.cbTrackTimeClick(Sender: TObject); +begin + EnableList(lTrackTimeList, cbTrackTime.Checked); +end; + +procedure TfrmFilter.EnableList(List: TList; Enable: Boolean); +var + i: Integer; + o: TObject; +begin + for i := 0 to List.Count - 1 do + begin + o := Pointer(List.Items[i]); + if (o is TControl) then + with o as TControl do + Enabled := Enable; + end; end; procedure TfrmFilter.cbTrackTitleClick(Sender: TObject); @@ -457,6 +493,7 @@ end; procedure TfrmFilter.FormShow(Sender: TObject); begin ChangeCheckBoxesChecked(Self); + FInitialValues := CmdLine; end; procedure TfrmFilter.ChangeCheckBoxesChecked(AComponent: TComponent; Restore: Boolean = False); @@ -479,4 +516,21 @@ begin end; end; +procedure TfrmFilter.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +var + str: string; +begin + if (Key <> 27) then Exit; + + + str := Self.CmdLine; + if (str <> FInitialValues) then + begin + if not(MessageDlg(_('Discard changes?'), mtWarning, mbOKCancel, 0) = mrOK) then + Exit; + end; + ModalResult := mrCancel; +end; + end. diff --git a/gpsbabel/win32/gui-2/locale/de/LC_MESSAGES/default.po b/gpsbabel/win32/gui-2/locale/de/LC_MESSAGES/default.po index f0f28fbe8..16e5a4325 100644 --- a/gpsbabel/win32/gui-2/locale/de/LC_MESSAGES/default.po +++ b/gpsbabel/win32/gui-2/locale/de/LC_MESSAGES/default.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: GPSBabel 1.2.7\n" "POT-Creation-Date: 2005-08-12 14:50\n" -"PO-Revision-Date: 2005-10-29 01:00+0100\n" +"PO-Revision-Date: 2005-11-20 21:14+0100\n" "Last-Translator: Olaf Klein \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -11,875 +11,773 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: dxgettext 1.2\n" "X-Poedit-Language: German\n" -"X-Poedit-Country: GERMANY\n" -#. frmAbout..Caption #. frmAbout..Caption #: about.dfm:5 -#: test/about.dfm:5 msgid "About" msgstr "Über" #. frmAbout..pnClient..pnCenter..lbHint1..Caption -#. frmAbout..pnClient..pnCenter..lbHint1..Caption -#: about.dfm:74 -#: test/about.dfm:74 +#: about.dfm:76 msgid "This program is part of the GPSBabel project, hosted on" msgstr "Dieses Programm ist Bestandteil des Projektes \"GPSBabel\", zu finden auf" #. frmAbout..pnClient..pnCenter..lbVersion..Caption -#. frmAbout..pnClient..pnCenter..lbVersion..Caption -#: about.dfm:82 -#: test/about.dfm:82 -msgid "Version 0.2" -msgstr "Version 0.2" +#: about.dfm:84 +#: about.pas:80 +msgid "Version" +msgstr "Version" #. frmAbout..pnClient..pnCenter..lbTranslators..Caption -#. frmAbout..pnClient..pnCenter..lbTranslators..Caption -#: about.dfm:89 -#: test/about.dfm:89 +#: about.dfm:91 msgid "Translations" -msgstr "Übersetzung" +msgstr "Übersetzungen" #. frmAbout..pnClient..pnCenter..lbURL..Caption -#. frmAbout..pnClient..pnCenter..lbURL..Caption -#: about.dfm:96 -#: test/about.dfm:96 +#: about.dfm:98 msgid "www.gpsbabel.org" msgstr "www.gpsbabel.org" #. frmAbout..pnClient..pnCenter..lbCopyRight..Caption -#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption -#: about.dfm:112 -#: test/about.dfm:112 +#: about.dfm:114 msgid "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)" msgstr "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)" #. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption -#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption -#: about.dfm:119 -#: test/about.dfm:119 +#: about.dfm:121 msgid "Find more info at" msgstr "Mehr Info's unter" -#. frmAbout..pnClient..pnCenter..lbSFURL..Caption -#. frmAbout..pnClient..pnCenter..lbSFURL..Caption -#: about.dfm:126 -#: test/about.dfm:126 -msgid "SourceForge.net" -msgstr "SourceForge.net" - -#. frmAbout..pnClient..pnCenter..stDescription..Caption #. frmAbout..pnClient..pnCenter..stDescription..Caption -#: about.dfm:147 -#: test/about.dfm:147 +#: about.dfm:149 msgid "The frontend for gpsbabel command line program" msgstr "Das Windows-Fontend für \"gpsbabel.exe\"" #. frmAbout..pnClient..pnCenter..stLicense..Caption -#. frmAbout..pnClient..pnCenter..stLicense..Caption -#: about.dfm:161 -#: test/about.dfm:161 +#: about.dfm:163 msgid "THIS SOFTWARE MAY ONLY BE LICENSED FREE OF CHARGE" msgstr "DIESE SOFTWARE KANN UND DARF NUR KOSTENLOS WEITERGEGEBEN WERDEN" -#. frmFilter..Caption +#. frmAbout..pnClient..pnCenter..btnNewLanguage..Caption +#: about.dfm:192 +msgid "Adding a new language" +msgstr "Eine neue Sprache hinzufügen" + #. frmFilter..Caption #: filter.dfm:6 -#: test/filter.dfm:6 msgid "Filter" msgstr "Filter" #. frmFilter..gbTracks..Caption -#. frmMain..Panel2..cbTracks..Caption -#. frmFilter..gbTracks..Caption -#. frmMain..Panel2..cbTracks..Caption -#: filter.dfm:29 -#: main.dfm:448 -#: test/filter.dfm:29 -#: test/main.dfm:428 +#. frmMain..pnBottom..cbTracks..Caption +#: filter.dfm:31 +#: main.dfm:587 msgid "&Tracks" msgstr "&Tracks" #. frmFilter..gbTracks..lbTimePlusMinus..Caption -#. frmFilter..gbTracks..lbTimePlusMinus..Caption -#: filter.dfm:37 -#: test/filter.dfm:37 +#: filter.dfm:39 msgid "by" msgstr "um" #. frmFilter..gbTracks..lbTimeDays..Caption -#. frmFilter..gbTracks..lbTimeDays..Caption -#: filter.dfm:44 -#: test/filter.dfm:44 +#: filter.dfm:46 msgid "day(s), " msgstr "Tag(e)," #. frmFilter..gbTracks..lbTimeHours..Caption -#. frmFilter..gbTracks..lbTimeHours..Caption -#: filter.dfm:51 -#: test/filter.dfm:51 +#: filter.dfm:53 msgid "hour(s), " msgstr "Stunde(n)," #. frmFilter..gbTracks..lbTimeMinutes..Caption -#. frmFilter..gbTracks..lbTimeMinutes..Caption -#: filter.dfm:58 -#: test/filter.dfm:58 +#: filter.dfm:60 msgid "minute(s)," msgstr "Minute(n)," #. frmFilter..gbTracks..lbTimeSeconds..Caption -#. frmFilter..gbTracks..lbTimeSeconds..Caption -#: filter.dfm:65 -#: test/filter.dfm:65 +#: filter.dfm:67 msgid "second(s)" msgstr "Sekunde(n)" #. frmFilter..gbTracks..cbTrackTitle..Hint -#. frmFilter..gbTracks..cbTrackTitle..Hint -#: filter.dfm:72 -#: test/filter.dfm:72 +#: filter.dfm:74 msgid "Title for new tracks" msgstr "Titel für neu erstellte Tracks" #. frmFilter..gbTracks..cbTrackTitle..Caption -#. frmFilter..gbTracks..cbTrackTitle..Caption -#: filter.dfm:74 -#: test/filter.dfm:74 +#: filter.dfm:76 msgid "Tit&le" msgstr "Tite&l" -#. frmFilter..gbTracks..edTrackTitle..Text -#. frmFilter..gbTracks..edTrackTitle..Text -#: filter.dfm:86 -#: test/filter.dfm:86 -msgid "ACTIVE LOG # %Y%m%d" -msgstr "ACTIVE LOG # %Y%m%d" - #. frmFilter..gbTracks..cbTrackSplit..Hint -#. frmFilter..gbTracks..cbTrackSplit..Hint -#: filter.dfm:93 -#: test/filter.dfm:93 +#: filter.dfm:95 msgid "Split track into several tracks depending on date of trackpoint" msgstr "Erzeuge mehrere Tracks abhängig vom Datum der Trackpunkte" #. frmFilter..gbTracks..cbTrackSplit..Caption -#. frmFilter..gbTracks..cbTrackSplit..Caption -#: filter.dfm:94 -#: test/filter.dfm:94 +#: filter.dfm:96 msgid "&Split" msgstr "&Splitten" #. frmFilter..gbTracks..cbTrackTime..Hint -#. frmFilter..gbTracks..cbTrackTime..Hint -#: filter.dfm:102 -#: test/filter.dfm:102 +#: filter.dfm:104 msgid "Shift all tracks" msgstr "Tracks um ein Zeitintervall verschieben " #. frmFilter..gbTracks..cbTrackTime..Caption -#. frmFilter..gbTracks..cbTrackTime..Caption -#: filter.dfm:103 -#: test/filter.dfm:103 +#: filter.dfm:105 msgid "&Move" msgstr "Verschieben" #. frmFilter..gbTracks..cbTrackStart..Hint -#. frmFilter..gbTracks..cbTrackStart..Hint -#: filter.dfm:195 -#: test/filter.dfm:195 +#: filter.dfm:197 msgid "Take only trackpoints starting at" msgstr "beginne bei Zeitpunkt ..." #. frmFilter..gbTracks..cbTrackStart..Caption -#. frmFilter..gbTracks..cbTrackStart..Caption -#: filter.dfm:196 -#: test/filter.dfm:196 +#: filter.dfm:198 msgid "Start at" msgstr "Beginnend am" #. frmFilter..gbTracks..cbTrackStop..Caption -#. frmFilter..gbTracks..cbTrackStop..Caption -#: filter.dfm:235 -#: test/filter.dfm:235 +#: filter.dfm:237 msgid "stop at" msgstr "bis zum" #. frmFilter..gbTracks..cbTrackPack..Hint -#. frmFilter..gbTracks..cbTrackPack..Hint -#: filter.dfm:274 -#: test/filter.dfm:274 +#: filter.dfm:276 msgid "Pack all tracks into one track (No duplicate timestamps)" msgstr "Alle Tracks zu einem einzigen zusammenfassen (doppelte Zeitstempel unzulässig)" #. frmFilter..gbTracks..cbTrackPack..Caption -#. frmFilter..gbTracks..cbTrackPack..Caption -#: filter.dfm:275 -#: test/filter.dfm:275 +#: filter.dfm:277 msgid "&Pack (or)" msgstr "&Packen (oder)" #. frmFilter..gbTracks..cbTrackMerge..Hint -#. frmFilter..gbTracks..cbTrackMerge..Hint -#: filter.dfm:284 -#: test/filter.dfm:284 +#: filter.dfm:286 msgid "Merge all tracks into one track" msgstr "Fasse alle Tracks zu einem einzigen zusammen (doppelte Zeitstempel werden verworfen)" #. frmFilter..gbTracks..cbTrackMerge..Caption -#. frmFilter..gbTracks..cbTrackMerge..Caption -#: filter.dfm:285 -#: test/filter.dfm:285 +#: filter.dfm:287 msgid "Merge" msgstr "Zusammenführen" #. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint -#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint -#: filter.dfm:294 -#: test/filter.dfm:294 +#: filter.dfm:296 msgid "Shift start/stop by local timezone offset" msgstr "Verschiebe Beginn/Ende um Differenz zur lokalen Zeitzone" #. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption -#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption -#: filter.dfm:295 -#: test/filter.dfm:295 +#: filter.dfm:297 msgid "TZ" msgstr "\"TZ\"" #. frmFilter..gbRoutes..Caption -#. frmFilter..gbRoutes..Caption -#: filter.dfm:306 -#: test/filter.dfm:306 +#: filter.dfm:308 msgid "&Routes && Tracks" msgstr "&Routen && Tracks" #. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption -#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption -#: filter.dfm:314 -#: test/filter.dfm:314 +#: filter.dfm:316 msgid "limit to" msgstr "auf maximal" #. frmFilter..gbRoutes..lbRouteSimplifyText..Caption -#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption -#: filter.dfm:322 -#: test/filter.dfm:322 +#: filter.dfm:324 msgid "Points" msgstr "Punkte" #. frmFilter..gbRoutes..cbRouteSimplify..Hint -#. frmFilter..gbRoutes..cbRouteSimplify..Hint -#: filter.dfm:329 -#: test/filter.dfm:329 +#: filter.dfm:331 msgid "Simplify routes and tracks by limited number of points" msgstr "Limitiert die Anzahl von Wegpunkten in Routen und Tracks" #. frmFilter..gbRoutes..cbRouteSimplify..Caption -#. frmFilter..gbRoutes..cbRouteSimplify..Caption -#: filter.dfm:330 -#: test/filter.dfm:330 +#: filter.dfm:332 msgid "Simplify" msgstr "Vereinfachen" #. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint -#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint -#: filter.dfm:339 -#: test/filter.dfm:339 +#: filter.dfm:341 msgid "Upper limit of points for routes and tracks" msgstr "Maximale Anzahl an Punkten innerhalb von Routen und Tracks" #. frmFilter..gbRoutes..cbReverse..Hint -#. frmFilter..gbRoutes..cbReverse..Hint -#: filter.dfm:361 -#: test/filter.dfm:361 +#: filter.dfm:363 msgid "Reverse routes and tracks" msgstr "Reihenfolge von Wegpunkten in Routen und Tracks umdrehen" #. frmFilter..gbRoutes..cbReverse..Caption -#. frmFilter..gbRoutes..cbReverse..Caption -#: filter.dfm:362 -#: test/filter.dfm:362 +#: filter.dfm:364 msgid "Reverse" msgstr "Umdrehen" #. frmFilter..pnBottom..btnOK..Caption -#. frmFilter..pnBottom..btnOK..Caption -#: filter.dfm:379 -#: test/filter.dfm:379 +#: filter.dfm:381 msgid "OK" msgstr "OK" #. frmFilter..pnBottom..BitBtn1..Caption -#. frmFilter..pnBottom..BitBtn1..Caption -#: filter.dfm:415 -#: test/filter.dfm:415 +#: filter.dfm:417 msgid "File based filters" msgstr "Datei basierende Filter" #. frmFilter..gbWaypoints..Caption -#. frmMain..Panel2..cbWaypoints..Caption -#. frmFilter..gbWaypoints..Caption -#. frmMain..Panel2..cbWaypoints..Caption -#: filter.dfm:435 -#: main.dfm:426 -#: test/filter.dfm:435 -#: test/main.dfm:408 +#. frmMain..pnBottom..cbWaypoints..Caption +#: filter.dfm:437 +#: main.dfm:561 msgid "&Waypoints" msgstr "&Wegpunkte" #. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption -#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption -#: filter.dfm:444 -#: test/filter.dfm:444 +#: filter.dfm:446 msgid "Latitude" msgstr "Breitengrad" #. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption -#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption -#: filter.dfm:452 -#: test/filter.dfm:452 +#: filter.dfm:454 msgid "Longitude" msgstr "Längengrad" #. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint -#: filter.dfm:460 -#: test/filter.dfm:460 +#: filter.dfm:462 msgid "Merge waypoints with duplicate locations" msgstr "Fasse Wegpunkte mit gleichen Koordinaten zusammen" #. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption -#: filter.dfm:461 -#: test/filter.dfm:461 +#: filter.dfm:463 msgid "locations" msgstr "Koordinaten" #. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint -#: filter.dfm:470 -#: test/filter.dfm:470 +#: filter.dfm:472 msgid "Merge waypoints with duplicate \"short name\"" msgstr "Fasse Wegpunkte mit gleichem Namen zusammen" #. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption -#: filter.dfm:471 -#: test/filter.dfm:471 +#: filter.dfm:473 msgid "\"short names\"" msgstr "\"Kurznamen\"" #. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint -#: filter.dfm:480 -#: test/filter.dfm:480 +#: filter.dfm:482 msgid "Merge waypoints separated by less then" msgstr "Fasse alle Wegpunkte zusammen, die weniger als ... auseinander liegen" #. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption -#: filter.dfm:481 -#: test/filter.dfm:481 +#: filter.dfm:483 msgid "Position" msgstr "Position" #. frmFilter..gbWaypoints..cbWayptSort..Hint -#. frmFilter..gbWaypoints..cbWayptSort..Hint -#: filter.dfm:509 -#: test/filter.dfm:509 +#: filter.dfm:511 msgid "Sort waypoints by \"short name\" or by description" msgstr "Sortiere Wegpunkte nach Name oder Beschreibung" #. frmFilter..gbWaypoints..cbWayptSort..Caption -#. frmFilter..gbWaypoints..cbWayptSort..Caption -#: filter.dfm:510 -#: test/filter.dfm:510 +#: filter.dfm:512 msgid "Sort" msgstr "Sortieren" #. frmFilter..gbWaypoints..cbWayptMergeDups..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint -#: filter.dfm:518 -#: test/filter.dfm:518 +#: filter.dfm:520 msgid "Merge duplicate waypoints" msgstr "Entferne doppelte Wegpunkte" #. frmFilter..gbWaypoints..cbWayptMergeDups..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption -#: filter.dfm:519 -#: test/filter.dfm:519 -msgid "Duplicatates" +#: filter.dfm:521 +msgid "Duplicates" msgstr "Duplikate" #. frmFilter..gbWaypoints..cbWayptRadius..Hint -#. frmFilter..gbWaypoints..cbWayptRadius..Hint -#: filter.dfm:528 -#: test/filter.dfm:528 +#: filter.dfm:530 msgid "Include points based on their proximity to central point" msgstr "Übernehme nur Punkte mit Entfernung von maximal ... um Mittelpunkt ..." #. frmFilter..gbWaypoints..cbWayptRadius..Caption -#. frmFilter..gbWaypoints..cbWayptRadius..Caption -#: filter.dfm:529 -#: test/filter.dfm:529 +#: filter.dfm:531 msgid "Radius" msgstr "Radius" #. frmFilter..gbWaypoints..edWayptRadiusLat..Hint -#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint -#: filter.dfm:557 -#: test/filter.dfm:557 +#: filter.dfm:559 msgid "Latitude of central point" msgstr "Breitengrad (Latitude) des Mittelpunktes" #. frmFilter..gbWaypoints..edWayptRadiusLon..Hint -#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint -#: filter.dfm:567 -#: test/filter.dfm:567 +#: filter.dfm:569 msgid "Longitude of central point" msgstr "Längengrad (Longitude) des Mittelpunktes" -#. frmMain..Panel1..sbOpenFile..Hint -#: main.dfm:35 +#. frmMain..pnTop..gbInput..Caption +#: main.dfm:38 +#: main.pas:285 +#: main.pas:431 +msgid "Input" +msgstr "Eingabe" + +#. frmMain..pnTop..gbInput..sbOpenFile..Hint +#: main.dfm:45 msgid "Start the file open dialog" msgstr "Die zu lesende Datei auswählen" -#. frmMain..Panel1..sbSaveFile..Hint -#: main.dfm:58 -msgid "Start the file save dialog" -msgstr "Die zu schreibende Datei auswählen" - -#. frmMain..Panel1..lbInputFile..Caption -#. frmMain..Panel1..lbInputFile..Caption -#: main.dfm:81 -#: test/main.dfm:78 -msgid "&Input file" -msgstr "Eingabe-Datei" - -#. frmMain..Panel1..lbOutputFile..Caption -#. frmMain..Panel1..lbOutputFile..Caption -#: main.dfm:89 -#: test/main.dfm:86 -msgid "Out&put file" -msgstr "Ausgabe-Datei" - -#. frmMain..Panel1..lbInputFormat..Caption -#. frmMain..Panel1..lbInputFormat..Caption -#: main.dfm:97 -#: test/main.dfm:94 -msgid "Input &format" -msgstr "Eingabe-Format" - -#. frmMain..Panel1..lbOutputFormat..Caption -#. frmMain..Panel1..lbOutputFormat..Caption -#: main.dfm:104 -#: test/main.dfm:101 -msgid "Output f&ormat" -msgstr "Ausgabe-Format" - -#. frmMain..Panel1..lbInputOpts..Caption -#. frmMain..Panel1..lbOutputOpts..Caption -#. frmMain..Panel1..lbInputOpts..Caption -#. frmMain..Panel1..lbOutputOpts..Caption -#: main.dfm:111 -#: main.dfm:119 -#: test/main.dfm:108 -#: test/main.dfm:116 +#. frmMain..pnTop..gbInput..lbInputOpts..Caption +#. frmMain..pnTop..gbOutput..lbOutputOpts..Caption +#. frmMain..ActionList1..acOptionsSourceFormat..Category +#. frmMain..ActionList1..acOptionsTargetFormat..Category +#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Category +#: main.dfm:68 +#: main.dfm:232 +#: main.dfm:1426 +#: main.dfm:1431 +#: main.dfm:1445 msgid "Options" msgstr "Optionen" -#. frmMain..Panel1..cbInputFormat..Hint -#: main.dfm:128 -msgid "Format for input from file" -msgstr "zu benutzendes Eingabeformat" +#. frmMain..pnTop..gbInput..lbInputFormat..Caption +#. frmMain..pnTop..gbOutput..lbOutputFormat..Caption +#: main.dfm:76 +#: main.dfm:262 +msgid "Format" +msgstr "Format" -#. frmMain..Panel1..cbOutputFormat..Hint -#: main.dfm:141 -msgid "Format for output to file" -msgstr "zu benutzendes Ausgabeformat" - -#. frmMain..Panel1..edOutputFile..Hint -#: main.dfm:154 -msgid "Write data to given filename" -msgstr "Dateiname für Datenausgabe" - -#. frmMain..Panel1..edInputFile..Hint -#: main.dfm:166 -msgid "Read data from given filename" -msgstr "Lese Daten von Datei ..." +#. frmMain..pnTop..gbInput..lbInputFile..Caption +#. frmMain..pnTop..gbOutput..lbOutputFile..Caption +#. frmMain..ActionList1..acFileExit..Category +#. frmMain..ActionList1..acFileClearMemo..Category +#. frmMain..ActionList1..acFileOutputToScreen..Category +#. frmMain..ActionList1..acFileChangeLanguage..Category +#: main.dfm:83 +#: main.dfm:269 +#: main.dfm:1407 +#: main.dfm:1436 +#: main.dfm:1451 +#: main.dfm:1463 +#: main.pas:805 +#: main.pas:855 +msgid "File" +msgstr "Datei" -#. frmMain..Panel1..chbInputDevice..Hint -#: main.dfm:176 +#. frmMain..pnTop..gbInput..chbInputDevice..Hint +#: main.dfm:112 msgid "Read data from device instead from file" msgstr "Dateneingabe von \"Gerät\"" -#. frmMain..Panel1..chbInputDevice..Caption -#. frmMain..Panel1..chbOutputDevice..Caption -#. frmMain..Panel1..chbInputDevice..Caption -#. frmMain..Panel1..chbOutputDevice..Caption -#: main.dfm:177 -#: main.dfm:231 -#: test/main.dfm:167 -#: test/main.dfm:217 +#. frmMain..pnTop..gbInput..chbInputDevice..Caption +#. frmMain..pnTop..gbOutput..chbOutputDevice..Caption +#: main.dfm:115 +#: main.dfm:302 msgid "Device" msgstr "Gerät" -#. frmMain..Panel1..cbInputDevice..Hint -#: main.dfm:187 +#. frmMain..pnTop..gbInput..edInputOpts..Hint +#: main.dfm:124 +msgid "Options for the selected input format" +msgstr "Optionen für das gewählte Eingabe-Format" + +#. frmMain..pnTop..gbInput..edInputFile..Hint +#: main.dfm:135 +msgid "Read data from given filename" +msgstr "Lese Daten von Datei ..." + +#. frmMain..pnTop..gbInput..cbInputLang..Hint +#: main.dfm:146 +msgid "Characterset for input data" +msgstr "Zeichensatz für Eingangsdaten (nicht jedes Format unterstützt dies!)" + +#. frmMain..pnTop..gbInput..cbInputLang....Items.Strings +#. frmMain..pnTop..gbOutput..cbOutputLang....Items.Strings +#: main.dfm:152 +#: main.dfm:366 +msgid "- default -" +msgstr "- Standard -" + +#. frmMain..pnTop..gbInput..cbInputDevice..Hint +#: main.dfm:179 msgid "Read data from device ..." msgstr "lese von Interface/Anschluß..." -#. frmMain..Panel1..cbInputDevice....Items.Strings -#. frmMain..Panel1..cbOutputDevice....Items.Strings -#. frmMain..Panel1..cbInputDevice....Items.Strings -#. frmMain..Panel1..cbOutputDevice....Items.Strings -#: main.dfm:191 -#: main.dfm:245 -#: test/main.dfm:180 -#: test/main.dfm:230 -msgid "USB" -msgstr "USB" - -#. frmMain..Panel1..cbInputFormatDevice..Hint -#: main.dfm:205 +#. frmMain..pnTop..gbInput..cbInputFormatDevice..Hint +#: main.dfm:197 msgid "Format for input from device" msgstr "Eingabeformat des angeschlossenen Gerätes" -#. frmMain..Panel1..cbOutputFormatDevice..Hint -#: main.dfm:219 -msgid "Format for ouput to device" -msgstr "Ausgabeformat für angeschlossenes Gerät" +#. frmMain..pnTop..gbInput..cbInputFormat..Hint +#: main.dfm:211 +msgid "Format for input from file" +msgstr "zu benutzendes Eingabeformat" + +#. frmMain..pnTop..gbOutput..Caption +#: main.dfm:225 +#: main.pas:286 +#: main.pas:440 +msgid "Output" +msgstr "Ausgabe" + +#. frmMain..pnTop..gbOutput..sbSaveFile..Hint +#: main.dfm:276 +msgid "Start the file save dialog" +msgstr "Die zu schreibende Datei auswählen" -#. frmMain..Panel1..chbOutputDevice..Hint -#: main.dfm:230 +#. frmMain..pnTop..gbOutput..chbOutputDevice..Hint +#: main.dfm:299 msgid "Write data to device instead to file" msgstr "Datenausgabe auf \"Gerät\"" -#. frmMain..Panel1..cbOutputDevice..Hint -#: main.dfm:241 -msgid "Write data to device ..." -msgstr "schreibe nach Interface/Anschluß" - -#. frmMain..Panel1..edInputOpts..Hint -#: main.dfm:258 -msgid "Options for the selected input format" -msgstr "Optionen für das gewählte Eingabe-Format" +#. frmMain..pnTop..gbOutput..cbOutputFormatDevice..Hint +#: main.dfm:312 +msgid "Format for ouput to device" +msgstr "Ausgabeformat für angeschlossenes Gerät" -#. frmMain..Panel1..edOutputOpts..Hint -#: main.dfm:267 +#. frmMain..pnTop..gbOutput..edOutputOpts..Hint +#: main.dfm:324 msgid "Options for the selected output format" msgstr "Optionen für das gewählte Ausgabeformat" -#. frmMain..Panel2..lbWhat..Caption -#. frmMain..Panel2..lbWhat..Caption -#: main.dfm:286 -#: test/main.dfm:269 +#. frmMain..pnTop..gbOutput..cbOutputFormat..Hint +#: main.dfm:335 +msgid "Format for output to file" +msgstr "zu benutzendes Ausgabeformat" + +#. frmMain..pnTop..gbOutput..edOutputFile..Hint +#: main.dfm:348 +msgid "Write data to given filename" +msgstr "Dateiname für Datenausgabe" + +#. frmMain..pnTop..gbOutput..cbOutputLang..Hint +#: main.dfm:360 +msgid "Characterset for output data" +msgstr "Zeichensatz für Ausgangsdaten (nicht jedes Format unterstützt dies!)" + +#. frmMain..pnTop..gbOutput..cbOutputDevice..Hint +#: main.dfm:393 +msgid "Write data to device ..." +msgstr "schreibe nach Interface/Anschluß" + +#. frmMain..pnBottom..lbWhat..Caption +#: main.dfm:421 msgid "What ?" msgstr "Was?" -#. frmMain..Panel2..cbWaypoints..Hint -#: main.dfm:425 +#. frmMain..pnBottom..cbWaypoints..Hint +#: main.dfm:560 msgid "Include waypoints" msgstr "Wegpunkte in Konvertierung einschließen" -#. frmMain..Panel2..cbRoutes..Hint -#: main.dfm:437 +#. frmMain..pnBottom..cbRoutes..Hint +#: main.dfm:574 msgid "Include routes" msgstr "Routenpunkte in Konvertierung einschließen" -#. frmMain..Panel2..cbRoutes..Caption -#. frmMain..Panel2..cbRoutes..Caption -#: main.dfm:438 -#: test/main.dfm:419 +#. frmMain..pnBottom..cbRoutes..Caption +#: main.dfm:575 msgid "&Routes" msgstr "&Routen" -#. frmMain..Panel2..cbTracks..Hint -#: main.dfm:447 +#. frmMain..pnBottom..cbTracks..Hint +#: main.dfm:586 msgid "Include tracks" msgstr "Trackpunkte in Konvertierung einschließen" -#. frmMain..Panel2..btnFilter..Hint -#: main.dfm:457 -msgid "Filter incomming data before writing them to file or device" -msgstr "gelesene Daten filtern" - -#. frmMain..Panel2..btnFilter..Caption -#. frmMain..ActionList1..acFilterSelect..Caption -#. frmMain..Panel2..btnFilter..Caption +#. frmMain..pnBottom..btnFilter..Caption #. frmMain..ActionList1..acFilterSelect..Caption -#: main.dfm:460 -#: main.dfm:990 -#: test/main.dfm:439 -#: test/main.dfm:968 +#: main.dfm:600 +#: main.dfm:1401 msgid "&Filter" msgstr "&Filter" -#. frmMain..Panel2..btnProcess..Hint -#: main.dfm:504 +#. frmMain..pnBottom..btnProcess..Hint +#: main.dfm:644 msgid "Start data conversion" msgstr "Konvertierung starten" -#. frmMain..Panel2..btnProcess..Caption +#. frmMain..pnBottom..btnProcess..Caption #. frmMain..ActionList1..acConvert..Caption -#. frmMain..Panel2..btnProcess..Caption -#. frmMain..ActionList1..acConvert..Caption -#: main.dfm:507 -#: main.dfm:983 -#: test/main.dfm:485 -#: test/main.dfm:961 +#: main.dfm:647 +#: main.dfm:1394 msgid "let's go" msgstr "und los" -#. frmMain..stbMain........Text -#. frmMain..stbMain........Text -#: main.dfm:555 -#: test/main.dfm:533 -msgid "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)" -msgstr "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)" - -#. frmMain..OpenDialog..Filter #. frmMain..OpenDialog..Filter -#: main.dfm:562 -#: test/main.dfm:540 +#: main.dfm:709 msgid "Garmin Mapsource mps|*.mps|All files|*.*" msgstr "Garmin Mapsource mps|*.mps|Alle Dateien|*.*" #. frmMain..SaveDialog..Filter -#. frmMain..SaveDialog..Filter -#: main.dfm:568 -#: test/main.dfm:546 +#: main.dfm:715 msgid "All file(s)|*.*|Garmin MapSource mps|*.mps" msgstr "Alle Dateien|*.*|Garmin MapSource mps|*.mps" #. frmMain..ActionList1..acConvert..Category #. frmMain..ActionList1..acFilterSelect..Category -#. frmMain..ActionList1..acConvert..Category -#. frmMain..ActionList1..acFilterSelect..Category -#: main.dfm:982 -#: main.dfm:989 -#: test/main.dfm:960 -#: test/main.dfm:967 +#: main.dfm:1393 +#: main.dfm:1400 msgid "Babel" msgstr "Babel" -#. frmMain..ActionList1..acFileExit..Category -#. frmMain..ActionList1..acFileExit..Category -#: main.dfm:995 -#: test/main.dfm:973 -msgid "File" -msgstr "Datei" +#. frmMain..ActionList1..acFilterSelect..Hint +#: main.dfm:1402 +msgid "Filter incomming data before writing them to file or device" +msgstr "gelesene Daten filtern" #. frmMain..ActionList1..acFileExit..Caption -#. frmMain..ActionList1..acFileExit..Caption -#: main.dfm:996 -#: test/main.dfm:974 +#: main.dfm:1408 msgid "E&xit" msgstr "Beenden" #. frmMain..ActionList1..acHelpAbout..Category #. frmMain..ActionList1..acHelpIntro..Category #. frmMain..ActionList1..acHelpReadme..Category -#. frmMain..ActionList1..acHelpAbout..Category -#. frmMain..ActionList1..acHelpIntro..Category -#. frmMain..ActionList1..acHelpReadme..Category -#: main.dfm:1001 -#: main.dfm:1006 -#: main.dfm:1010 -#: test/main.dfm:979 -#: test/main.dfm:984 -#: test/main.dfm:988 +#: main.dfm:1412 +#: main.dfm:1417 +#: main.dfm:1421 msgid "Help" msgstr "Hilfe" #. frmMain..ActionList1..acHelpAbout..Caption -#. frmMain..ActionList1..acHelpAbout..Caption -#: main.dfm:1002 -#: test/main.dfm:980 +#: main.dfm:1413 msgid "&About" msgstr "Über" #. frmMain..ActionList1..acHelpIntro..Caption -#. frmMain..ActionList1..acHelpIntro..Caption -#: main.dfm:1007 -#: test/main.dfm:985 +#: main.dfm:1418 msgid "&Intro" msgstr "Einführung" #. frmMain..ActionList1..acHelpReadme..Caption #. frmReadme..Caption -#. frmMain..ActionList1..acHelpReadme..Caption -#. frmReadme..Caption -#: main.dfm:1011 +#: main.dfm:1422 #: readme.dfm:6 -#: test/main.dfm:989 -#: test/readme.dfm:6 msgid "GPSBabel README" msgstr "GPSBabel README" +#. frmMain..ActionList1..acOptionsSourceFormat..Caption +#: main.dfm:1427 +msgid "... for source format" +msgstr "... für Quellformat" + +#. frmMain..ActionList1..acOptionsTargetFormat..Caption +#: main.dfm:1432 +msgid "... for target format" +msgstr "... für Zielformat" + +#. frmMain..ActionList1..acFileClearMemo..Caption +#: main.dfm:1437 +msgid "Clear output" +msgstr "Meldungen löschen" + +#. frmMain..ActionList1..acFileClearMemo..Hint +#: main.dfm:1438 +msgid "Clear messages" +msgstr "Meldungen löschen" + +#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Caption +#: main.dfm:1446 +msgid "Enable characterset transformation" +msgstr "Zeichensatz transformieren" + +#. frmMain..ActionList1..acFileOutputToScreen..Caption +#: main.dfm:1452 +msgid "Output to screen" +msgstr "Ausgabe auf Bildschirm" + +#. frmMain..ActionList1..acFileChangeLanguage..Caption +#: main.dfm:1464 +msgid "Change language" +msgstr "Sprache ändern" + #. frmMain..MainMenu1..mnuFile..Caption -#. frmMain..MainMenu1..mnuFile..Caption -#: main.dfm:1020 -#: test/main.dfm:998 +#: main.dfm:1473 msgid "&File" msgstr "&Datei" #. frmMain..MainMenu1..mnuOptions..Caption -#. frmMain..MainMenu1..mnuOptions..Caption -#: main.dfm:1026 -#: test/main.dfm:1004 +#: main.dfm:1494 msgid "&Options" msgstr "&Optionen" #. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption -#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption -#: main.dfm:1028 -#: test/main.dfm:1006 +#: main.dfm:1496 msgid "Synthesize short names" msgstr "Synthetisiere Kurznamen" #. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint -#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint -#: main.dfm:1031 -#: test/main.dfm:1009 +#: main.dfm:1499 msgid "Ignore \"short\" names from source data and synthesize them from the long name" msgstr "Ignoriere alle \"Kurznamen\" und generiere diese neu aus Bechreibung oder Bemerkung" +#. frmMain..MainMenu1..mnuOptions..mnuOptionsForceDataType..Caption +#: main.dfm:1503 +msgid "Force selected GPS data types (nuketypes filter)" +msgstr "" + #. frmMain..MainMenu1..mnuHelp..Caption -#. frmMain..MainMenu1..mnuHelp..Caption -#: main.dfm:1040 -#: test/main.dfm:1018 +#: main.dfm:1538 msgid "&Help" msgstr "&Hilfe" -#: about.pas:76 -#: test/about.pas:76 -msgid "Version" -msgstr "Version" +#. frmOptions..Caption +#: options.dfm:5 +msgid "Options for ..." +msgstr "Optionen für ..." -#: about.pas:83 -#: test/about.pas:83 +#: about.pas:87 msgid "German by Olaf Klein" msgstr "Deutsch von Olaf Klein" -#: about.pas:84 -#: test/about.pas:84 +#: about.pas:88 msgid "French by Lilian Morinon" msgstr "Französisch von Lilian Morinon" -#. Programmer's name for it: SGPSBabelURL -#. Programmer's name for it: SGPSBabelURL -#: common.pas:27 -#: test/common.pas:27 -msgid "http://www.gpsbabel.org" -msgstr "http://www.gpsbabel.org" - -#: filter.pas:160 -#: test/filter.pas:160 -msgid "Value (%s) out of range (%g to %g)!" -msgstr "Wert (%s) liegt außerhalb des zulässigen Bereiches (%g to %g)!" +#: about.pas:131 +msgid "" +"Please have a look at the file README.GUI.\n" +"\n" +"There you will find all information you need to\n" +"get GPSBabelGUI working in your own language." +msgstr "" +"Werfen Sie einen kurzen Blick in die Datei \"README.GUI\"\n" +"\n" +"Dort finden Sie alle nötigen Informationen, um\n" +"GPSBabelBUI eine neue Sprache beizubringen." -#: filter.pas:228 -#: test/filter.pas:228 +#: filter.pas:199 msgid "Feet" msgstr "\"Feet\" (engl.)" -#: filter.pas:229 -#: test/filter.pas:229 +#: filter.pas:200 msgid "Meter" msgstr "Meter" -#: filter.pas:232 -#: test/filter.pas:232 +#: filter.pas:203 msgid "Miles" msgstr "Meilen" -#: filter.pas:233 -#: test/filter.pas:233 +#: filter.pas:204 msgid "Kilometer" msgstr "Kilometer" -#: main.pas:181 -#: test/main.pas:181 +#: filter.pas:214 +msgid "Not supported by gpsbabel.exe, release %s!" +msgstr "Wird von gpsbabel.exe, Version %s, nicht unterstützt!" + +#: filter.pas:250 +msgid "Value (%s) out of range (%g to %g)!" +msgstr "Wert (%s) liegt außerhalb des zulässigen Bereiches (%g to %g)!" + +#: filter.pas:530 +#: options.pas:575 +msgid "Discard changes?" +msgstr "Änderungen verwerfen?" + +#: main.pas:238 +msgid "Internal development release" +msgstr "Interne Entwicklungsausgabe" + +#: main.pas:240 msgid "BETA" msgstr "BETA" -#: main.pas:183 -#: test/main.pas:183 +#: main.pas:242 msgid "Private release" msgstr "Private Version" -#: main.pas:185 -#: test/main.pas:185 +#: main.pas:244 msgid "Special release" msgstr "Spezial-Version" -#: main.pas:283 -#: main.pas:378 -#: test/main.pas:281 -#: test/main.pas:376 +#: main.pas:313 +msgid "The file \"gpsbabel.exe\" found in current directory is too old!" +msgstr "Die Datei \"gpsbabel.exe\" ist zu alt für diese GUI!" + +#: main.pas:382 +#: main.pas:510 msgid "All files|*.*" msgstr "Alle Dateien|*.*" -#: main.pas:420 -#: test/main.pas:417 +#: main.pas:448 +msgid "Select and edit options for \"%s\"" +msgstr "Optionen von \"%s\" bearbeiten" + +#: main.pas:452 +msgid "No options available for \"%s\"" +msgstr " \"%s\" hat keine Optionen!" + +#: main.pas:557 msgid "File %s not found." msgstr "Datei \"%s\" nicht gefunden." -#: main.pas:441 -#: test/main.pas:438 +#: main.pas:615 msgid "File \"%s\" exists ! Overwrite ?" msgstr "Datei \"%s\" existiert bereits! Überschreiben?" -#: main.pas:442 -#: test/main.pas:439 +#: main.pas:616 msgid "Warning" msgstr "Warnung" -#: main.pas:471 -#: test/main.pas:468 +#: main.pas:649 msgid "Could not run \"gpsbabel.exe\"!" msgstr "Konnte \"gpsbabel.exe\" nicht ausführen!" -#: main.pas:481 +#: main.pas:658 msgid "Sorry, gpsbabel.exe reported problems!" msgstr "Uhps, da ging etwas schief!" -#: main.pas:482 -msgid "Error" -msgstr "Fehler" - -#: main.pas:485 -#: test/main.pas:477 +#: main.pas:660 msgid "Converted successfully from \"%s\" to \"%s\"." msgstr "Erfolgreich konvertiert von \"%s\" zu \"%s\"." -#: main.pas:486 -#: test/main.pas:478 -msgid "Success" -msgstr "Erfolg" +#: main.pas:761 +msgid "GPSBabel, version %s" +msgstr "GPSBabel, Version %s" + +#: main.pas:795 +#: main.pas:846 +msgid "Port" +msgstr "Schnittstelle" + +#: main.pas:937 +msgid "Options for \"%s\"" +msgstr "Optionen für \"%s\"" + +#. override; +#: options.pas:86 +msgid "Be aware, that most options are made for the output side. " +msgstr "Achtung: die meisten Optionen sind vermutlich für die Datenausgabe gedacht." -#: utils.pas:86 -#: test/utils.pas:76 +#: options.pas:87 +msgid "Currently we don't have a flag which tells us which direction is used the options." +msgstr "Wir verfügen z.Z. über kein Merkmal über die Arbeitsweise der Optionen." + +#: options.pas:145 +msgid "Short \"%s\"" +msgstr "Abkürzung \"%s\"" + +#: options.pas:246 +msgid "Invalid line format!" +msgstr "Ungültiger Zeilenaufbau!" + +#: options.pas:267 +msgid "Unknown option \"%s\"!" +msgstr "Unbekannte Option \"%s\"!" + +#: utils.pas:108 msgid "Error WINAPI: Could not create \"NamedPipe\"!" msgstr "Fehler WINAPI: \"NamedPipe\" konnte nicht erstellt werden!" -#: utils.pas:91 -#: test/utils.pas:81 +#: utils.pas:113 msgid "\"gpsbabel.exe\" not found!!!" msgstr "\"gpsbabel.exe\" wurde nicht gefunden!!!" #. dwCreationFlags, // creation flags -#. dwCreationFlags, // creation flags -#: utils.pas:110 -#: test/utils.pas:100 +#: utils.pas:132 msgid "Could not run \"gpsbabel.exe\" (Error %d)!" msgstr "Konnte \"gpsbabel.exe\" nicht ausführen (Fehler %d)!" -#: utils.pas:116 -#: test/utils.pas:106 +#: utils.pas:160 msgid "\"gpsbabel.exe\" returned error 0x%x (%d)" msgstr "\"gpsbabel.exe\" verließ uns mit Fehler 0x%x (%d)!" diff --git a/gpsbabel/win32/gui-2/locale/fr/LC_MESSAGES/default.po b/gpsbabel/win32/gui-2/locale/fr/LC_MESSAGES/default.po index 3a7d4d870..bce73aa4c 100644 --- a/gpsbabel/win32/gui-2/locale/fr/LC_MESSAGES/default.po +++ b/gpsbabel/win32/gui-2/locale/fr/LC_MESSAGES/default.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: French version\n" "POT-Creation-Date: 2005-09-22 23:44\n" -"PO-Revision-Date: 2005-11-01 19:32+0100\n" -"Last-Translator: Lilian Morinon \n" +"PO-Revision-Date: 2005-11-20 21:14+0100\n" +"Last-Translator: Olaf Klein \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,874 +19,772 @@ msgstr "" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: s\n" -#. frmAbout..Caption #. frmAbout..Caption #: about.dfm:5 -#: test/about.dfm:5 msgid "About" msgstr "A propos" #. frmAbout..pnClient..pnCenter..lbHint1..Caption -#. frmAbout..pnClient..pnCenter..lbHint1..Caption -#: about.dfm:74 -#: test/about.dfm:74 +#: about.dfm:76 msgid "This program is part of the GPSBabel project, hosted on" msgstr "Ce programme fait partie du projet GPSBabel, hébergé sur" -# +++ IGNORE +++ -#. frmAbout..pnClient..pnCenter..lbVersion..Caption #. frmAbout..pnClient..pnCenter..lbVersion..Caption -#: about.dfm:82 -#: test/about.dfm:82 -msgid "Version 0.2" +#: about.dfm:84 +#: about.pas:80 +msgid "Version" msgstr "" #. frmAbout..pnClient..pnCenter..lbTranslators..Caption -#. frmAbout..pnClient..pnCenter..lbTranslators..Caption -#: about.dfm:89 -#: test/about.dfm:89 +#: about.dfm:91 msgid "Translations" msgstr "Traductions" #. frmAbout..pnClient..pnCenter..lbURL..Caption -#. frmAbout..pnClient..pnCenter..lbURL..Caption -#: about.dfm:96 -#: test/about.dfm:96 +#: about.dfm:98 msgid "www.gpsbabel.org" msgstr "www.gpsbabel.org" #. frmAbout..pnClient..pnCenter..lbCopyRight..Caption -#. frmAbout..pnClient..pnCenter..lbCopyRight..Caption -#: about.dfm:112 -#: test/about.dfm:112 +#: about.dfm:114 msgid "Copyright (C) 2005 Olaf Klein (O.B.Klein@T-Online.de)" msgstr "" #. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption -#. frmAbout..pnClient..pnCenter..lbMoreInfo..Caption -#: about.dfm:119 -#: test/about.dfm:119 +#: about.dfm:121 msgid "Find more info at" msgstr "Plus d'infos sur" -#. frmAbout..pnClient..pnCenter..lbSFURL..Caption -#. frmAbout..pnClient..pnCenter..lbSFURL..Caption -#: about.dfm:126 -#: test/about.dfm:126 -msgid "SourceForge.net" -msgstr "SourceForge.net" - #. frmAbout..pnClient..pnCenter..stDescription..Caption -#. frmAbout..pnClient..pnCenter..stDescription..Caption -#: about.dfm:147 -#: test/about.dfm:147 +#: about.dfm:149 msgid "The frontend for gpsbabel command line program" msgstr "L'interface graphique de gpsbabel" #. frmAbout..pnClient..pnCenter..stLicense..Caption -#. frmAbout..pnClient..pnCenter..stLicense..Caption -#: about.dfm:161 -#: test/about.dfm:161 +#: about.dfm:163 msgid "THIS SOFTWARE MAY ONLY BE LICENSED FREE OF CHARGE" msgstr "Ce prgramme ne peut être utilisé que sous license gratuite" -#. frmFilter..Caption +#. frmAbout..pnClient..pnCenter..btnNewLanguage..Caption +#: about.dfm:192 +msgid "Adding a new language" +msgstr "" + #. frmFilter..Caption #: filter.dfm:6 -#: test/filter.dfm:6 msgid "Filter" msgstr "Filtre" #. frmFilter..gbTracks..Caption -#. frmMain..Panel2..cbTracks..Caption -#. frmFilter..gbTracks..Caption -#. frmMain..Panel2..cbTracks..Caption -#: filter.dfm:29 -#: main.dfm:448 -#: test/filter.dfm:29 -#: test/main.dfm:428 +#. frmMain..pnBottom..cbTracks..Caption +#: filter.dfm:31 +#: main.dfm:587 msgid "&Tracks" msgstr "&Traces" #. frmFilter..gbTracks..lbTimePlusMinus..Caption -#. frmFilter..gbTracks..lbTimePlusMinus..Caption -#: filter.dfm:37 -#: test/filter.dfm:37 +#: filter.dfm:39 msgid "by" msgstr "par" #. frmFilter..gbTracks..lbTimeDays..Caption -#. frmFilter..gbTracks..lbTimeDays..Caption -#: filter.dfm:44 -#: test/filter.dfm:44 +#: filter.dfm:46 msgid "day(s), " msgstr "jour(s)," #. frmFilter..gbTracks..lbTimeHours..Caption -#. frmFilter..gbTracks..lbTimeHours..Caption -#: filter.dfm:51 -#: test/filter.dfm:51 +#: filter.dfm:53 msgid "hour(s), " msgstr "heure(s)" #. frmFilter..gbTracks..lbTimeMinutes..Caption -#. frmFilter..gbTracks..lbTimeMinutes..Caption -#: filter.dfm:58 -#: test/filter.dfm:58 +#: filter.dfm:60 msgid "minute(s)," msgstr "minute(s)" #. frmFilter..gbTracks..lbTimeSeconds..Caption -#. frmFilter..gbTracks..lbTimeSeconds..Caption -#: filter.dfm:65 -#: test/filter.dfm:65 +#: filter.dfm:67 msgid "second(s)" msgstr "seconde(s)" #. frmFilter..gbTracks..cbTrackTitle..Hint -#. frmFilter..gbTracks..cbTrackTitle..Hint -#: filter.dfm:72 -#: test/filter.dfm:72 +#: filter.dfm:74 msgid "Title for new tracks" msgstr "Titres des nouvelles traces" #. frmFilter..gbTracks..cbTrackTitle..Caption -#. frmFilter..gbTracks..cbTrackTitle..Caption -#: filter.dfm:74 -#: test/filter.dfm:74 +#: filter.dfm:76 msgid "Tit&le" msgstr "Tit&re" -#. frmFilter..gbTracks..edTrackTitle..Text -#. frmFilter..gbTracks..edTrackTitle..Text -#: filter.dfm:86 -#: test/filter.dfm:86 -msgid "ACTIVE LOG # %Y%m%d" -msgstr "ACTIVE LOG # %Y%m%d" - #. frmFilter..gbTracks..cbTrackSplit..Hint -#. frmFilter..gbTracks..cbTrackSplit..Hint -#: filter.dfm:93 -#: test/filter.dfm:93 +#: filter.dfm:95 msgid "Split track into several tracks depending on date of trackpoint" msgstr "Scinder la trace en plusieurs traces en fonction de la date des points" #. frmFilter..gbTracks..cbTrackSplit..Caption -#. frmFilter..gbTracks..cbTrackSplit..Caption -#: filter.dfm:94 -#: test/filter.dfm:94 +#: filter.dfm:96 msgid "&Split" msgstr "&Scinder" #. frmFilter..gbTracks..cbTrackTime..Hint -#. frmFilter..gbTracks..cbTrackTime..Hint -#: filter.dfm:102 -#: test/filter.dfm:102 +#: filter.dfm:104 msgid "Shift all tracks" msgstr "Inverser toutes les traces" #. frmFilter..gbTracks..cbTrackTime..Caption -#. frmFilter..gbTracks..cbTrackTime..Caption -#: filter.dfm:103 -#: test/filter.dfm:103 +#: filter.dfm:105 msgid "&Move" msgstr "&Déplacer" #. frmFilter..gbTracks..cbTrackStart..Hint -#. frmFilter..gbTracks..cbTrackStart..Hint -#: filter.dfm:195 -#: test/filter.dfm:195 +#: filter.dfm:197 msgid "Take only trackpoints starting at" msgstr "Utiliser seulement les points commençant à" #. frmFilter..gbTracks..cbTrackStart..Caption -#. frmFilter..gbTracks..cbTrackStart..Caption -#: filter.dfm:196 -#: test/filter.dfm:196 +#: filter.dfm:198 msgid "Start at" msgstr "Commencer à" #. frmFilter..gbTracks..cbTrackStop..Caption -#. frmFilter..gbTracks..cbTrackStop..Caption -#: filter.dfm:235 -#: test/filter.dfm:235 +#: filter.dfm:237 msgid "stop at" msgstr "Arrêter à" #. frmFilter..gbTracks..cbTrackPack..Hint -#. frmFilter..gbTracks..cbTrackPack..Hint -#: filter.dfm:274 -#: test/filter.dfm:274 +#: filter.dfm:276 msgid "Pack all tracks into one track (No duplicate timestamps)" msgstr "Fusionner toutes les traces en une seule (pas de duplication de l'horodatage)" #. frmFilter..gbTracks..cbTrackPack..Caption -#. frmFilter..gbTracks..cbTrackPack..Caption -#: filter.dfm:275 -#: test/filter.dfm:275 +#: filter.dfm:277 msgid "&Pack (or)" msgstr "&Fusionner (ou)" #. frmFilter..gbTracks..cbTrackMerge..Hint -#. frmFilter..gbTracks..cbTrackMerge..Hint -#: filter.dfm:284 -#: test/filter.dfm:284 +#: filter.dfm:286 msgid "Merge all tracks into one track" msgstr "Fusionner toutes les traces en une seule" #. frmFilter..gbTracks..cbTrackMerge..Caption -#. frmFilter..gbTracks..cbTrackMerge..Caption -#: filter.dfm:285 -#: test/filter.dfm:285 +#: filter.dfm:287 msgid "Merge" msgstr "Fusionner" #. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint -#. frmFilter..gbTracks..cbTrackRangeTimeZone..Hint -#: filter.dfm:294 -#: test/filter.dfm:294 +#: filter.dfm:296 msgid "Shift start/stop by local timezone offset" msgstr "Décaler le début/fin en fonction du décalage horaire local" #. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption -#. frmFilter..gbTracks..cbTrackRangeTimeZone..Caption -#: filter.dfm:295 -#: test/filter.dfm:295 +#: filter.dfm:297 msgid "TZ" msgstr "" #. frmFilter..gbRoutes..Caption -#. frmFilter..gbRoutes..Caption -#: filter.dfm:306 -#: test/filter.dfm:306 +#: filter.dfm:308 msgid "&Routes && Tracks" msgstr "&Routes && Traces" #. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption -#. frmFilter..gbRoutes..lbRouteSimplifyCount..Caption -#: filter.dfm:314 -#: test/filter.dfm:314 +#: filter.dfm:316 msgid "limit to" msgstr "limiter à" #. frmFilter..gbRoutes..lbRouteSimplifyText..Caption -#. frmFilter..gbRoutes..lbRouteSimplifyText..Caption -#: filter.dfm:322 -#: test/filter.dfm:322 +#: filter.dfm:324 msgid "Points" msgstr "" #. frmFilter..gbRoutes..cbRouteSimplify..Hint -#. frmFilter..gbRoutes..cbRouteSimplify..Hint -#: filter.dfm:329 -#: test/filter.dfm:329 +#: filter.dfm:331 msgid "Simplify routes and tracks by limited number of points" msgstr "Simplifier les routes et traces en limitant le nombre de points" #. frmFilter..gbRoutes..cbRouteSimplify..Caption -#. frmFilter..gbRoutes..cbRouteSimplify..Caption -#: filter.dfm:330 -#: test/filter.dfm:330 +#: filter.dfm:332 msgid "Simplify" msgstr "Simplifier" #. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint -#. frmFilter..gbRoutes..edRoutesSimplifyMaxPoints..Hint -#: filter.dfm:339 -#: test/filter.dfm:339 +#: filter.dfm:341 msgid "Upper limit of points for routes and tracks" msgstr "Limite maximum du nombre de points pour les routes et traces" #. frmFilter..gbRoutes..cbReverse..Hint -#. frmFilter..gbRoutes..cbReverse..Hint -#: filter.dfm:361 -#: test/filter.dfm:361 +#: filter.dfm:363 msgid "Reverse routes and tracks" msgstr "Inverser les routes et les traces" #. frmFilter..gbRoutes..cbReverse..Caption -#. frmFilter..gbRoutes..cbReverse..Caption -#: filter.dfm:362 -#: test/filter.dfm:362 +#: filter.dfm:364 msgid "Reverse" msgstr "Inverser" #. frmFilter..pnBottom..btnOK..Caption -#. frmFilter..pnBottom..btnOK..Caption -#: filter.dfm:379 -#: test/filter.dfm:379 +#: filter.dfm:381 msgid "OK" msgstr "OK" #. frmFilter..pnBottom..BitBtn1..Caption -#. frmFilter..pnBottom..BitBtn1..Caption -#: filter.dfm:415 -#: test/filter.dfm:415 +#: filter.dfm:417 msgid "File based filters" msgstr "Filtres de fichiers" #. frmFilter..gbWaypoints..Caption -#. frmMain..Panel2..cbWaypoints..Caption -#. frmFilter..gbWaypoints..Caption -#. frmMain..Panel2..cbWaypoints..Caption -#: filter.dfm:435 -#: main.dfm:426 -#: test/filter.dfm:435 -#: test/main.dfm:408 +#. frmMain..pnBottom..cbWaypoints..Caption +#: filter.dfm:437 +#: main.dfm:561 msgid "&Waypoints" msgstr "" #. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption -#. frmFilter..gbWaypoints..lbWayptRadiusLat..Caption -#: filter.dfm:444 -#: test/filter.dfm:444 +#: filter.dfm:446 msgid "Latitude" msgstr "" #. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption -#. frmFilter..gbWaypoints..lbWayptRadiusLon..Caption -#: filter.dfm:452 -#: test/filter.dfm:452 +#: filter.dfm:454 msgid "Longitude" msgstr "" #. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Hint -#: filter.dfm:460 -#: test/filter.dfm:460 +#: filter.dfm:462 msgid "Merge waypoints with duplicate locations" msgstr "Fusionner les waypoints avec les positions en doublon" #. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDupLoc..Caption -#: filter.dfm:461 -#: test/filter.dfm:461 +#: filter.dfm:463 msgid "locations" msgstr "positions" #. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Hint -#: filter.dfm:470 -#: test/filter.dfm:470 +#: filter.dfm:472 msgid "Merge waypoints with duplicate \"short name\"" msgstr "Fusionner les waypoints avec les doublons \"short name\"" #. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDupNames..Caption -#: filter.dfm:471 -#: test/filter.dfm:471 +#: filter.dfm:473 msgid "\"short names\"" msgstr "\"noms courts\"" #. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDistance..Hint -#: filter.dfm:480 -#: test/filter.dfm:480 +#: filter.dfm:482 msgid "Merge waypoints separated by less then" msgstr "Fusionner les waypoints séparé par moins de" #. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDistance..Caption -#: filter.dfm:481 -#: test/filter.dfm:481 +#: filter.dfm:483 msgid "Position" msgstr "" #. frmFilter..gbWaypoints..cbWayptSort..Hint -#. frmFilter..gbWaypoints..cbWayptSort..Hint -#: filter.dfm:509 -#: test/filter.dfm:509 +#: filter.dfm:511 msgid "Sort waypoints by \"short name\" or by description" msgstr "Trier les waypoints par \"short name\" ou par description" #. frmFilter..gbWaypoints..cbWayptSort..Caption -#. frmFilter..gbWaypoints..cbWayptSort..Caption -#: filter.dfm:510 -#: test/filter.dfm:510 +#: filter.dfm:512 msgid "Sort" msgstr "Trier" #. frmFilter..gbWaypoints..cbWayptMergeDups..Hint -#. frmFilter..gbWaypoints..cbWayptMergeDups..Hint -#: filter.dfm:518 -#: test/filter.dfm:518 +#: filter.dfm:520 msgid "Merge duplicate waypoints" msgstr "Fusionner les waypoints identiques" #. frmFilter..gbWaypoints..cbWayptMergeDups..Caption -#. frmFilter..gbWaypoints..cbWayptMergeDups..Caption -#: filter.dfm:519 -#: test/filter.dfm:519 -msgid "Duplicatates" +#: filter.dfm:521 +msgid "Duplicates" msgstr "Doublons" #. frmFilter..gbWaypoints..cbWayptRadius..Hint -#. frmFilter..gbWaypoints..cbWayptRadius..Hint -#: filter.dfm:528 -#: test/filter.dfm:528 +#: filter.dfm:530 msgid "Include points based on their proximity to central point" msgstr "Inclure les points en fonction de la proximité d'un point central" #. frmFilter..gbWaypoints..cbWayptRadius..Caption -#. frmFilter..gbWaypoints..cbWayptRadius..Caption -#: filter.dfm:529 -#: test/filter.dfm:529 +#: filter.dfm:531 msgid "Radius" msgstr "Rayon" #. frmFilter..gbWaypoints..edWayptRadiusLat..Hint -#. frmFilter..gbWaypoints..edWayptRadiusLat..Hint -#: filter.dfm:557 -#: test/filter.dfm:557 +#: filter.dfm:559 msgid "Latitude of central point" msgstr "Latitude du point central" #. frmFilter..gbWaypoints..edWayptRadiusLon..Hint -#. frmFilter..gbWaypoints..edWayptRadiusLon..Hint -#: filter.dfm:567 -#: test/filter.dfm:567 +#: filter.dfm:569 msgid "Longitude of central point" msgstr "Longitude du point central" -#. frmMain..Panel1..sbOpenFile..Hint -#: main.dfm:35 +#. frmMain..pnTop..gbInput..Caption +#: main.dfm:38 +#: main.pas:285 +#: main.pas:431 +msgid "Input" +msgstr "Entrée" + +#. frmMain..pnTop..gbInput..sbOpenFile..Hint +#: main.dfm:45 msgid "Start the file open dialog" msgstr "Menu de d'ouverture de fichier" -#. frmMain..Panel1..sbSaveFile..Hint -#: main.dfm:58 -msgid "Start the file save dialog" -msgstr "Menu de sauvegarde de fichier" - -#. frmMain..Panel1..lbInputFile..Caption -#. frmMain..Panel1..lbInputFile..Caption -#: main.dfm:81 -#: test/main.dfm:78 -msgid "&Input file" -msgstr "Fichier &source" - -#. frmMain..Panel1..lbOutputFile..Caption -#. frmMain..Panel1..lbOutputFile..Caption -#: main.dfm:89 -#: test/main.dfm:86 -msgid "Out&put file" -msgstr "Fichier &cible" - -#. frmMain..Panel1..lbInputFormat..Caption -#. frmMain..Panel1..lbInputFormat..Caption -#: main.dfm:97 -#: test/main.dfm:94 -msgid "Input &format" -msgstr "Format sou&rce" - -#. frmMain..Panel1..lbOutputFormat..Caption -#. frmMain..Panel1..lbOutputFormat..Caption -#: main.dfm:104 -#: test/main.dfm:101 -msgid "Output f&ormat" -msgstr "Format ci&ble" - -#. frmMain..Panel1..lbInputOpts..Caption -#. frmMain..Panel1..lbOutputOpts..Caption -#. frmMain..Panel1..lbInputOpts..Caption -#. frmMain..Panel1..lbOutputOpts..Caption -#: main.dfm:111 -#: main.dfm:119 -#: test/main.dfm:108 -#: test/main.dfm:116 +#. frmMain..pnTop..gbInput..lbInputOpts..Caption +#. frmMain..pnTop..gbOutput..lbOutputOpts..Caption +#. frmMain..ActionList1..acOptionsSourceFormat..Category +#. frmMain..ActionList1..acOptionsTargetFormat..Category +#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Category +#: main.dfm:68 +#: main.dfm:232 +#: main.dfm:1426 +#: main.dfm:1431 +#: main.dfm:1445 msgid "Options" msgstr "" -#. frmMain..Panel1..cbInputFormat..Hint -#: main.dfm:128 -msgid "Format for input from file" -msgstr "Format d'entrée depuis un fichier" - -#. frmMain..Panel1..cbOutputFormat..Hint -#: main.dfm:141 -msgid "Format for output to file" -msgstr "Format de sortie vers un fichier" - -#. frmMain..Panel1..edOutputFile..Hint -#: main.dfm:154 -msgid "Write data to given filename" -msgstr "Ecrire les données dans un fichier" +#. frmMain..pnTop..gbInput..lbInputFormat..Caption +#. frmMain..pnTop..gbOutput..lbOutputFormat..Caption +#: main.dfm:76 +#: main.dfm:262 +msgid "Format" +msgstr "" -#. frmMain..Panel1..edInputFile..Hint -#: main.dfm:166 -msgid "Read data from given filename" -msgstr "Lire les données de puis un fichier" +#. frmMain..pnTop..gbInput..lbInputFile..Caption +#. frmMain..pnTop..gbOutput..lbOutputFile..Caption +#. frmMain..ActionList1..acFileExit..Category +#. frmMain..ActionList1..acFileClearMemo..Category +#. frmMain..ActionList1..acFileOutputToScreen..Category +#. frmMain..ActionList1..acFileChangeLanguage..Category +#: main.dfm:83 +#: main.dfm:269 +#: main.dfm:1407 +#: main.dfm:1436 +#: main.dfm:1451 +#: main.dfm:1463 +#: main.pas:805 +#: main.pas:855 +msgid "File" +msgstr "Fichier" -#. frmMain..Panel1..chbInputDevice..Hint -#: main.dfm:176 +#. frmMain..pnTop..gbInput..chbInputDevice..Hint +#: main.dfm:112 msgid "Read data from device instead from file" msgstr "Lire les données depuis un périphérique plutôt qu'un fichier" -#. frmMain..Panel1..chbInputDevice..Caption -#. frmMain..Panel1..chbOutputDevice..Caption -#. frmMain..Panel1..chbInputDevice..Caption -#. frmMain..Panel1..chbOutputDevice..Caption -#: main.dfm:177 -#: main.dfm:231 -#: test/main.dfm:167 -#: test/main.dfm:217 +#. frmMain..pnTop..gbInput..chbInputDevice..Caption +#. frmMain..pnTop..gbOutput..chbOutputDevice..Caption +#: main.dfm:115 +#: main.dfm:302 msgid "Device" msgstr "Périphérique" -#. frmMain..Panel1..cbInputDevice..Hint -#: main.dfm:187 +#. frmMain..pnTop..gbInput..edInputOpts..Hint +#: main.dfm:124 +msgid "Options for the selected input format" +msgstr "Options du format d'entrée sélectionné" + +#. frmMain..pnTop..gbInput..edInputFile..Hint +#: main.dfm:135 +msgid "Read data from given filename" +msgstr "Lire les données de puis un fichier" + +#. frmMain..pnTop..gbInput..cbInputLang..Hint +#: main.dfm:146 +msgid "Characterset for input data" +msgstr "Code de caractères pour l'entrée" + +#. frmMain..pnTop..gbInput..cbInputLang....Items.Strings +#. frmMain..pnTop..gbOutput..cbOutputLang....Items.Strings +#: main.dfm:152 +#: main.dfm:366 +msgid "- default -" +msgstr "- défaut -" + +#. frmMain..pnTop..gbInput..cbInputDevice..Hint +#: main.dfm:179 msgid "Read data from device ..." msgstr "Lire les données depuis le périphérique" -#. frmMain..Panel1..cbInputDevice....Items.Strings -#. frmMain..Panel1..cbOutputDevice....Items.Strings -#. frmMain..Panel1..cbInputDevice....Items.Strings -#. frmMain..Panel1..cbOutputDevice....Items.Strings -#: main.dfm:191 -#: main.dfm:245 -#: test/main.dfm:180 -#: test/main.dfm:230 -msgid "USB" -msgstr "USB" - -#. frmMain..Panel1..cbInputFormatDevice..Hint -#: main.dfm:205 +#. frmMain..pnTop..gbInput..cbInputFormatDevice..Hint +#: main.dfm:197 msgid "Format for input from device" msgstr "Format d'entrée depuis le périphérique" -#. frmMain..Panel1..cbOutputFormatDevice..Hint -#: main.dfm:219 -msgid "Format for ouput to device" -msgstr "Format de sortie vers le périphérique" +#. frmMain..pnTop..gbInput..cbInputFormat..Hint +#: main.dfm:211 +msgid "Format for input from file" +msgstr "Format d'entrée depuis un fichier" + +#. frmMain..pnTop..gbOutput..Caption +#: main.dfm:225 +#: main.pas:286 +#: main.pas:440 +msgid "Output" +msgstr "" + +#. frmMain..pnTop..gbOutput..sbSaveFile..Hint +#: main.dfm:276 +msgid "Start the file save dialog" +msgstr "Menu de sauvegarde de fichier" -#. frmMain..Panel1..chbOutputDevice..Hint -#: main.dfm:230 +#. frmMain..pnTop..gbOutput..chbOutputDevice..Hint +#: main.dfm:299 msgid "Write data to device instead to file" msgstr "Ecrire les données sur le périphérique plutôt que dans un fichier" -#. frmMain..Panel1..cbOutputDevice..Hint -#: main.dfm:241 -msgid "Write data to device ..." -msgstr "Ecrire les données sur le périphérique" - -#. frmMain..Panel1..edInputOpts..Hint -#: main.dfm:258 -msgid "Options for the selected input format" -msgstr "Options du format d'entrée sélectionné" +#. frmMain..pnTop..gbOutput..cbOutputFormatDevice..Hint +#: main.dfm:312 +msgid "Format for ouput to device" +msgstr "Format de sortie vers le périphérique" -#. frmMain..Panel1..edOutputOpts..Hint -#: main.dfm:267 +#. frmMain..pnTop..gbOutput..edOutputOpts..Hint +#: main.dfm:324 msgid "Options for the selected output format" msgstr "Options du format de sortie sélectionné" -#. frmMain..Panel2..lbWhat..Caption -#. frmMain..Panel2..lbWhat..Caption -#: main.dfm:286 -#: test/main.dfm:269 +#. frmMain..pnTop..gbOutput..cbOutputFormat..Hint +#: main.dfm:335 +msgid "Format for output to file" +msgstr "Format de sortie vers un fichier" + +#. frmMain..pnTop..gbOutput..edOutputFile..Hint +#: main.dfm:348 +msgid "Write data to given filename" +msgstr "Ecrire les données dans un fichier" + +#. frmMain..pnTop..gbOutput..cbOutputLang..Hint +#: main.dfm:360 +msgid "Characterset for output data" +msgstr "Code de caractères pour la sortie" + +#. frmMain..pnTop..gbOutput..cbOutputDevice..Hint +#: main.dfm:393 +msgid "Write data to device ..." +msgstr "Ecrire les données sur le périphérique" + +#. frmMain..pnBottom..lbWhat..Caption +#: main.dfm:421 msgid "What ?" msgstr "Quoi ?" -#. frmMain..Panel2..cbWaypoints..Hint -#: main.dfm:425 +#. frmMain..pnBottom..cbWaypoints..Hint +#: main.dfm:560 msgid "Include waypoints" msgstr "Inclure les waypoints" -#. frmMain..Panel2..cbRoutes..Hint -#: main.dfm:437 +#. frmMain..pnBottom..cbRoutes..Hint +#: main.dfm:574 msgid "Include routes" msgstr "Inclure les routes" -#. frmMain..Panel2..cbRoutes..Caption -#. frmMain..Panel2..cbRoutes..Caption -#: main.dfm:438 -#: test/main.dfm:419 +#. frmMain..pnBottom..cbRoutes..Caption +#: main.dfm:575 msgid "&Routes" msgstr "" -#. frmMain..Panel2..cbTracks..Hint -#: main.dfm:447 +#. frmMain..pnBottom..cbTracks..Hint +#: main.dfm:586 msgid "Include tracks" msgstr "Inclure les traces" -#. frmMain..Panel2..btnFilter..Hint -#: main.dfm:457 -msgid "Filter incomming data before writing them to file or device" -msgstr "Filtrer les données envoyées avant de les écrire sur un périphérique ou dans un fichier" - -#. frmMain..Panel2..btnFilter..Caption -#. frmMain..ActionList1..acFilterSelect..Caption -#. frmMain..Panel2..btnFilter..Caption +#. frmMain..pnBottom..btnFilter..Caption #. frmMain..ActionList1..acFilterSelect..Caption -#: main.dfm:460 -#: main.dfm:990 -#: test/main.dfm:439 -#: test/main.dfm:968 +#: main.dfm:600 +#: main.dfm:1401 msgid "&Filter" msgstr "&Filtre" -#. frmMain..Panel2..btnProcess..Hint -#: main.dfm:504 +#. frmMain..pnBottom..btnProcess..Hint +#: main.dfm:644 msgid "Start data conversion" msgstr "Démarrer la conversion de données" -#. frmMain..Panel2..btnProcess..Caption +#. frmMain..pnBottom..btnProcess..Caption #. frmMain..ActionList1..acConvert..Caption -#. frmMain..Panel2..btnProcess..Caption -#. frmMain..ActionList1..acConvert..Caption -#: main.dfm:507 -#: main.dfm:983 -#: test/main.dfm:485 -#: test/main.dfm:961 +#: main.dfm:647 +#: main.dfm:1394 msgid "let's go" msgstr "Lancer" -#. frmMain..stbMain........Text -#. frmMain..stbMain........Text -#: main.dfm:555 -#: test/main.dfm:533 -msgid "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)" -msgstr "http://www.gpsbabel.org (http://sourceforge.net/projects/gpsbabel)" - -#. frmMain..OpenDialog..Filter #. frmMain..OpenDialog..Filter -#: main.dfm:562 -#: test/main.dfm:540 +#: main.dfm:709 msgid "Garmin Mapsource mps|*.mps|All files|*.*" msgstr "Garmin Mapsource mps|*.mps|Tous les fichiers|*.*" #. frmMain..SaveDialog..Filter -#. frmMain..SaveDialog..Filter -#: main.dfm:568 -#: test/main.dfm:546 +#: main.dfm:715 msgid "All file(s)|*.*|Garmin MapSource mps|*.mps" msgstr "Tous les fichier(s)|*.*|Garmin MapSource mps|*.mps" #. frmMain..ActionList1..acConvert..Category #. frmMain..ActionList1..acFilterSelect..Category -#. frmMain..ActionList1..acConvert..Category -#. frmMain..ActionList1..acFilterSelect..Category -#: main.dfm:982 -#: main.dfm:989 -#: test/main.dfm:960 -#: test/main.dfm:967 +#: main.dfm:1393 +#: main.dfm:1400 msgid "Babel" msgstr "Babel" -#. frmMain..ActionList1..acFileExit..Category -#. frmMain..ActionList1..acFileExit..Category -#: main.dfm:995 -#: test/main.dfm:973 -msgid "File" -msgstr "Fichier" +#. frmMain..ActionList1..acFilterSelect..Hint +#: main.dfm:1402 +msgid "Filter incomming data before writing them to file or device" +msgstr "Filtrer les données envoyées avant de les écrire sur un périphérique ou dans un fichier" #. frmMain..ActionList1..acFileExit..Caption -#. frmMain..ActionList1..acFileExit..Caption -#: main.dfm:996 -#: test/main.dfm:974 +#: main.dfm:1408 msgid "E&xit" msgstr "F&ermer" #. frmMain..ActionList1..acHelpAbout..Category #. frmMain..ActionList1..acHelpIntro..Category #. frmMain..ActionList1..acHelpReadme..Category -#. frmMain..ActionList1..acHelpAbout..Category -#. frmMain..ActionList1..acHelpIntro..Category -#. frmMain..ActionList1..acHelpReadme..Category -#: main.dfm:1001 -#: main.dfm:1006 -#: main.dfm:1010 -#: test/main.dfm:979 -#: test/main.dfm:984 -#: test/main.dfm:988 +#: main.dfm:1412 +#: main.dfm:1417 +#: main.dfm:1421 msgid "Help" msgstr "Aide" #. frmMain..ActionList1..acHelpAbout..Caption -#. frmMain..ActionList1..acHelpAbout..Caption -#: main.dfm:1002 -#: test/main.dfm:980 +#: main.dfm:1413 msgid "&About" msgstr "&A propos" #. frmMain..ActionList1..acHelpIntro..Caption -#. frmMain..ActionList1..acHelpIntro..Caption -#: main.dfm:1007 -#: test/main.dfm:985 +#: main.dfm:1418 msgid "&Intro" msgstr "&Introduction" #. frmMain..ActionList1..acHelpReadme..Caption #. frmReadme..Caption -#. frmMain..ActionList1..acHelpReadme..Caption -#. frmReadme..Caption -#: main.dfm:1011 +#: main.dfm:1422 #: readme.dfm:6 -#: test/main.dfm:989 -#: test/readme.dfm:6 msgid "GPSBabel README" msgstr "GPSBabel README" +#. frmMain..ActionList1..acOptionsSourceFormat..Caption +#: main.dfm:1427 +msgid "... for source format" +msgstr "... pour le format source" + +#. frmMain..ActionList1..acOptionsTargetFormat..Caption +#: main.dfm:1432 +msgid "... for target format" +msgstr "... pour le format cible" + +#. frmMain..ActionList1..acFileClearMemo..Caption +#: main.dfm:1437 +msgid "Clear output" +msgstr "Effacer la sortie" + +#. frmMain..ActionList1..acFileClearMemo..Hint +#: main.dfm:1438 +msgid "Clear messages" +msgstr "Effacer les messages" + +#. frmMain..ActionList1..acOptionsEnableCharactersetTransformation..Caption +#: main.dfm:1446 +msgid "Enable characterset transformation" +msgstr "Activer la transformation du code de caractères" + +#. frmMain..ActionList1..acFileOutputToScreen..Caption +#: main.dfm:1452 +msgid "Output to screen" +msgstr "Afficher sur l'écran" + +#. frmMain..ActionList1..acFileChangeLanguage..Caption +#: main.dfm:1464 +msgid "Change language" +msgstr "" + #. frmMain..MainMenu1..mnuFile..Caption -#. frmMain..MainMenu1..mnuFile..Caption -#: main.dfm:1020 -#: test/main.dfm:998 +#: main.dfm:1473 msgid "&File" msgstr "&Fichier" #. frmMain..MainMenu1..mnuOptions..Caption -#. frmMain..MainMenu1..mnuOptions..Caption -#: main.dfm:1026 -#: test/main.dfm:1004 +#: main.dfm:1494 msgid "&Options" msgstr "" #. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption -#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames..Caption -#: main.dfm:1028 -#: test/main.dfm:1006 +#: main.dfm:1496 msgid "Synthesize short names" msgstr "Générer les nom courts" #. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint -#. frmMain..MainMenu1..mnuOptions..mnuSynthesizeShortNames....Hint -#: main.dfm:1031 -#: test/main.dfm:1009 +#: main.dfm:1499 msgid "Ignore \"short\" names from source data and synthesize them from the long name" msgstr "Ingorer les noms \"courts\" de la source de données et les générer à partir des noms longs" +#. frmMain..MainMenu1..mnuOptions..mnuOptionsForceDataType..Caption +#: main.dfm:1503 +msgid "Force selected GPS data types (nuketypes filter)" +msgstr "Forcer le type de données GPS selctionné (filtre nuketypes)" + #. frmMain..MainMenu1..mnuHelp..Caption -#. frmMain..MainMenu1..mnuHelp..Caption -#: main.dfm:1040 -#: test/main.dfm:1018 +#: main.dfm:1538 msgid "&Help" msgstr "&Aide" -#: about.pas:76 -#: test/about.pas:76 -msgid "Version" -msgstr "" +#. frmOptions..Caption +#: options.dfm:5 +msgid "Options for ..." +msgstr "Options pour ..." -#: about.pas:83 -#: test/about.pas:83 +#: about.pas:87 msgid "German by Olaf Klein" msgstr "Allemand par Olaf Klein" -#: about.pas:84 -#: test/about.pas:84 +#: about.pas:88 msgid "French by Lilian Morinon" msgstr "Français par Lilian Morinon" -#. Programmer's name for it: SGPSBabelURL -#. Programmer's name for it: SGPSBabelURL -#: common.pas:27 -#: test/common.pas:27 -msgid "http://www.gpsbabel.org" -msgstr "http://www.gpsbabel.org" - -#: filter.pas:160 -#: test/filter.pas:160 -msgid "Value (%s) out of range (%g to %g)!" -msgstr "Valeurs (%s) en dehors des limites (%g à %g)!" +#: about.pas:131 +msgid "" +"Please have a look at the file README.GUI.\n" +"\n" +"There you will find all information you need to\n" +"get GPSBabelGUI working in your own language." +msgstr "" +"Consultez le fichier README.GUI\n" +"\n" +"Vous trouverez toutes l'information nécessaire\n" +"pour faire fonctionner GPSBabelGUI dans votre langue." -#: filter.pas:228 -#: test/filter.pas:228 +#: filter.pas:199 msgid "Feet" msgstr "Pieds" -#: filter.pas:229 -#: test/filter.pas:229 +#: filter.pas:200 msgid "Meter" msgstr "Mètre" -#: filter.pas:232 -#: test/filter.pas:232 +#: filter.pas:203 msgid "Miles" msgstr "" -#: filter.pas:233 -#: test/filter.pas:233 +#: filter.pas:204 msgid "Kilometer" msgstr "Kilomètre" -#: main.pas:181 -#: test/main.pas:181 +#: filter.pas:214 +msgid "Not supported by gpsbabel.exe, release %s!" +msgstr "Non supporté par GPSBabel, version %s!" + +#: filter.pas:250 +msgid "Value (%s) out of range (%g to %g)!" +msgstr "Valeurs (%s) en dehors des limites (%g à %g)!" + +#: filter.pas:530 +#: options.pas:575 +msgid "Discard changes?" +msgstr "Ne pas tenir compte des changements?" + +#: main.pas:238 +msgid "Internal development release" +msgstr "Version interne" + +#: main.pas:240 msgid "BETA" msgstr "BETA" -#: main.pas:183 -#: test/main.pas:183 +#: main.pas:242 msgid "Private release" msgstr "Version privée" -#: main.pas:185 -#: test/main.pas:185 +#: main.pas:244 msgid "Special release" msgstr "Version spéciale" -#: main.pas:283 -#: main.pas:378 -#: test/main.pas:281 -#: test/main.pas:376 +#: main.pas:313 +msgid "The file \"gpsbabel.exe\" found in current directory is too old!" +msgstr "Le fichier \"gpsbabel.exe\" présent dans le répertoir courant est trop vieux!" + +#: main.pas:382 +#: main.pas:510 msgid "All files|*.*" msgstr "Tous les fichiers|*.*" -#: main.pas:420 -#: test/main.pas:417 +#: main.pas:448 +msgid "Select and edit options for \"%s\"" +msgstr "Selctionner et éditer les options pour \"%s\"" + +#: main.pas:452 +msgid "No options available for \"%s\"" +msgstr "Pas d'option disponible pour \"%s\"" + +#: main.pas:557 msgid "File %s not found." msgstr "Fichier%s non trouvé." -#: main.pas:441 -#: test/main.pas:438 +#: main.pas:615 msgid "File \"%s\" exists ! Overwrite ?" msgstr "Le fichier \"%s\" existe déjà ! Ecraser ?" -#: main.pas:442 -#: test/main.pas:439 +#: main.pas:616 msgid "Warning" msgstr "Attention" -#: main.pas:471 -#: test/main.pas:468 +#: main.pas:649 msgid "Could not run \"gpsbabel.exe\"!" msgstr "Impossible d'éxécuter \"gpsbabel.exe\"!" -#: main.pas:481 +#: main.pas:658 msgid "Sorry, gpsbabel.exe reported problems!" msgstr "Désolé, GPSBabel a reporté un problème !" -#: main.pas:482 -msgid "Error" -msgstr "Erreur" - -#: main.pas:485 -#: test/main.pas:477 +#: main.pas:660 msgid "Converted successfully from \"%s\" to \"%s\"." msgstr "Conversion de \"%s\" à \"%s\" réussie." -#: main.pas:486 -#: test/main.pas:478 -msgid "Success" -msgstr "Succès" +#: main.pas:761 +msgid "GPSBabel, version %s" +msgstr "" + +#: main.pas:795 +#: main.pas:846 +msgid "Port" +msgstr "" + +#: main.pas:937 +msgid "Options for \"%s\"" +msgstr "Options pour \"%s\"" + +#. override; +#: options.pas:86 +msgid "Be aware, that most options are made for the output side. " +msgstr "Attention, la plupart des options sont faites pour le format de sortie." -#: utils.pas:86 -#: test/utils.pas:76 +#: options.pas:87 +msgid "Currently we don't have a flag which tells us which direction is used the options." +msgstr "Nous n'avons pour l'instant pas de drapeau indiquant dans quelle direction sont utilisées les options." + +#: options.pas:145 +msgid "Short \"%s\"" +msgstr "Raccourci \"%s\"" + +#: options.pas:246 +msgid "Invalid line format!" +msgstr "Format de ligne invalide" + +#: options.pas:267 +msgid "Unknown option \"%s\"!" +msgstr "Option inconnue \"%s\"" + +#: utils.pas:108 msgid "Error WINAPI: Could not create \"NamedPipe\"!" msgstr "Erreur WIANPI: Ne peut pas créer \"NamedPipe\"!" -#: utils.pas:91 -#: test/utils.pas:81 +#: utils.pas:113 msgid "\"gpsbabel.exe\" not found!!!" msgstr "\"gpsbabel.exe\" non trouvé!!!" #. dwCreationFlags, // creation flags -#. dwCreationFlags, // creation flags -#: utils.pas:110 -#: test/utils.pas:100 +#: utils.pas:132 msgid "Could not run \"gpsbabel.exe\" (Error %d)!" msgstr "Impossible d'éxecuter \"gpsbabel.exe\" (Error %d)!" -#: utils.pas:116 -#: test/utils.pas:106 +#: utils.pas:160 msgid "\"gpsbabel.exe\" returned error 0x%x (%d)" msgstr "\"gpsbabel.exe\" a renvoyé l'erreur 0x%x (%d)" diff --git a/gpsbabel/win32/gui-2/main.dfm b/gpsbabel/win32/gui-2/main.dfm index 0c698756c637e4406ff766e0f64c8c02b5c1a1e5..88c81da4d434c482f55634d2cf45f09f7d5d9461 100644 GIT binary patch literal 36702 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 delta 1662 zcmZ`(Uu@e%7{9ZV*ol+QYT~V=YnQ^vs*TVrbk&5a64Ev_Q$yFx{SyWy&f+8%i5<1B z-~kB)MNAA0jc*SiA*2Z=fta8y4{ZF|ctqO6ia-JhgvJA64}0i%LIMG{&v617C!Ov4 z?tXvn`|kYH+tdeNVE%6(64SYC_TkK#$h-?4YC|%l28m>;rBH+sc$j7!8_4R z^9uh5e$FG#N=3QG)ruLlv970;n(UgD%R0pnEYYWiZFwrdOiB%1(Nqr?wGffA0r97` z6YFb}nyRmAHHMQ*4jDqWg1=UrTi5?9kv9BI+Zyq14Zi`28kjqX_~lZY4}NwHj1b4e zHrwHDwg534Eo-ZFNrxVO@BqOyY)rBn(?diembLwPOQY$jUO=|U`Mh5U*XrB#u zstxE7%8#&j1|Z}Xr%Q_ND4V6EMX5shNI{AE5u5B?_)3`NSWzm@t(N3fr!Wnd zxkKHV`HNE`E@n|#Q;IeDe|8K{2V>nSy5{eP>%noK&q2c{y?5K5M90(3-b03`yRZlH z!TsRw>$hDUF+o=ejQn4c}sB%!E}7t9{i5re0=YN z5$s7RdR=Px{yd1#SR5g*;X0Kyzsxpf^kJhXjc$f8iWpC$#Q_%tNao!zkP~53QlT(v z9Fe@IV>|}JF*0{!d;$dVsI_iuJ_WI3EDS76!G}@9?Zj|XD9}T3OdL-buYYfaOgwMTo2w|Z z!^-&XNJr3|NScq17J>Oh1oOso&yHkA-1uyM^TGp|Om6& zBtJu;X6_|74k53Yl@v8AtLxs@2i$rw%vM|VO1%<;^r;^>Z%!&HT1J=aUKn~c0fVRa Jz&ocu`v*sa>HYu! diff --git a/gpsbabel/win32/gui-2/main.pas b/gpsbabel/win32/gui-2/main.pas index e7b10eed6..24820b7dc 100644 --- a/gpsbabel/win32/gui-2/main.pas +++ b/gpsbabel/win32/gui-2/main.pas @@ -21,25 +21,15 @@ unit main; interface uses - gnugettextD4, + TypInfo, gnugettext, gnugettextDx, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, - common, utils, ImgList, ActnList, Menus, ComCtrls; + common, utils, ImgList, ActnList, Menus, ComCtrls, ToolWin; type TfrmMain = class(TForm) - Panel1: TPanel; - sbOpenFile: TSpeedButton; - cbInputFormat: TComboBox; - cbOutputFormat: TComboBox; - edOutputFile: TEdit; - sbSaveFile: TSpeedButton; - lbInputFile: TLabel; - lbOutputFile: TLabel; - lbInputFormat: TLabel; - lbOutputFormat: TLabel; - edInputFile: TEdit; - Panel2: TPanel; + pnTop: TPanel; + pnBottom: TPanel; cbWaypoints: TCheckBox; cbRoutes: TCheckBox; cbTracks: TCheckBox; @@ -69,26 +59,62 @@ type acHelpIntro: TAction; Intro1: TMenuItem; About1: TMenuItem; - chbInputDevice: TCheckBox; - cbInputDevice: TComboBox; - cbInputFormatDevice: TComboBox; - cbOutputFormatDevice: TComboBox; - chbOutputDevice: TCheckBox; - cbOutputDevice: TComboBox; mnuReadme: TMenuItem; acHelpReadme: TAction; N1: TMenuItem; mnuOptions: TMenuItem; mnuSynthesizeShortNames: TMenuItem; - edInputOpts: TEdit; + Filter1: TMenuItem; + N2: TMenuItem; + acOptionsSourceFormat: TAction; + acOptionsTargetFormat: TAction; + forsourceformat1: TMenuItem; + fortargetformat1: TMenuItem; + acFileClearMemo: TAction; + N3: TMenuItem; + Clearoutput1: TMenuItem; + acFinalizeDropDowns: TAction; + N4: TMenuItem; + mnuOptionsForceDataType: TMenuItem; + acOptionsEnableCharactersetTransformation: TAction; + Enablecharactersettransformation1: TMenuItem; + gbInput: TGroupBox; + sbOpenFile: TSpeedButton; lbInputOpts: TLabel; + lbInputFormat: TLabel; + lbInputFile: TLabel; + edInputOpts: TComboBox; + edInputFile: TComboBox; + chbInputDevice: TCheckBox; + cbInputLang: TComboBox; + cbInputFormatDevice: TComboBox; + cbInputFormat: TComboBox; + cbInputDevice: TComboBox; + btnInputOpts: TSpeedButton; + gbOutput: TGroupBox; + cbOutputFormatDevice: TComboBox; + chbOutputDevice: TCheckBox; lbOutputOpts: TLabel; - edOutputOpts: TEdit; - Filter1: TMenuItem; + edOutputOpts: TComboBox; + btnOutputOpts: TSpeedButton; + lbOutputFormat: TLabel; + cbOutputFormat: TComboBox; + lbOutputFile: TLabel; + edOutputFile: TComboBox; + sbSaveFile: TSpeedButton; + cbOutputLang: TComboBox; + cbOutputDevice: TComboBox; + acFileOutputToScreen: TAction; + Outputtoscreen1: TMenuItem; + acDebugCreatePo: TAction; + mnuDebug: TMenuItem; + Createoptionspo1: TMenuItem; + acFileChangeLanguage: TAction; + Changelanguage1: TMenuItem; + N5: TMenuItem; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure OpenButtonClick(Sender: TObject); - procedure ComboChange(Sender: TObject); procedure edInputFileChange(Sender: TObject); procedure CheckInput; procedure edOutputFileChange(Sender: TObject); @@ -107,16 +133,41 @@ type procedure acHelpReadmeExecute(Sender: TObject); procedure mnuSynthesizeShortNamesClick(Sender: TObject); procedure edOutputFileKeyPress(Sender: TObject; var Key: Char); + procedure cbInputFormatDeviceChange(Sender: TObject); + procedure cbOutputFormatDeviceChange(Sender: TObject); + procedure cbInputFormatChange(Sender: TObject); + procedure cbOutputFormatChange(Sender: TObject); + procedure acOptionsSourceFormatExecute(Sender: TObject); + procedure acOptionsTargetFormatExecute(Sender: TObject); + procedure btnInputOptsClick(Sender: TObject); + procedure acFileClearMemoExecute(Sender: TObject); + procedure acFinalizeDropDownsExecute(Sender: TObject); + procedure mnuOptionsForceDataTypeClick(Sender: TObject); + procedure acOptionsEnableCharactersetTransformationExecute( + Sender: TObject); + procedure acFileOutputToScreenExecute(Sender: TObject); + procedure acDebugCreatePoExecute(Sender: TObject); + procedure acFileChangeLanguageExecute(Sender: TObject); private { Private-Deklarationen } FCaps: TCapabilities; + FOpts: TOptions; + FLang: TStringList; FFirstShow: Boolean; FOutHandmade: Boolean; procedure AddToOutput(const Str: string); procedure AddToOutputFmt(const Format: string; const Args: array of const); - procedure InitCombo(Target: TComboBox; ForRead, ForDevice: Boolean); + procedure ComboBoxChanged(const Format: string; IsInput, IsFile: Boolean); + procedure DoOnIdle(Sender: TObject; var Done: Boolean); + procedure EnableOptions(const Version: string); + function HandleOptions(const Format: string; AObject: TObject; IsInput: Boolean): Boolean; + function HandleOptionsDlg(const Format: string; var str: string; IsInput: Boolean): Boolean; + procedure HistoryChanged(Box: TComboBox; Swap: Boolean = False); + procedure InitCombo(Target: TComboBox; IsInput, ForDevice: Boolean); + procedure LoadLanguages; procedure LoadFileFormats; procedure LoadVersion; + procedure WMOPTIONSCHANGED(var Msg: TMessage); message WM_OPTIONS_CHANGED; procedure WMSTARTUP(var Msg: TMessage); message WM_STARTUP; procedure StoreProfiles; public @@ -128,7 +179,8 @@ var implementation -uses filter, about, readme; +uses + filter, about, readme, options; {$R *.DFM} @@ -160,10 +212,15 @@ end; { TfrmMain } procedure TfrmMain.FormCreate(Sender: TObject); -var - s: string; begin - gnugettextD4.TranslateComponent(SELF); + TP_Ignore(mnuDebug, 'mnuDebug'); +{$IFOPT D-} + mnuDebug.Visible := False; +{$ENDIF} + TranslateComponent(SELF); + LoadLanguages; + + FFirstShow := True; // VS_FF_DEBUG The file contains debugging information or is compiled with debugging features enabled. // VS_FF_INFOINFERRED The file's version structure was created dynamically; @@ -177,15 +234,19 @@ begin // but is a variation of the normal file of the same version number. // If this flag is set, the StringFileInfo structure should contain a SpecialBuild - if (CFixedFileinfo.dwFileFlags and VS_FF_PRERELEASE <> 0) then + if (CFixedFileinfo.dwFileFlags and VS_FF_DEBUG <> 0) then + Caption := Format('%s (%s)', [Caption, _('Internal development release')]) + else if (CFixedFileinfo.dwFileFlags and VS_FF_PRERELEASE <> 0) then Caption := Format('%s (%s)', [Caption, _('BETA')]) else if (CFixedFileinfo.dwFileFlags and VS_FF_PRIVATEBUILD <> 0) then Caption := Format('%s (%s)', [Caption, _('Private release')]) else if (CFixedFileinfo.dwFileFlags and VS_FF_SPECIALBUILD <> 0) then Caption := Format('%s (%s)', [Caption, _('Special release')]); + memoOutput.Lines.Clear; FCaps := TCapabilities.Create; + FOpts := TOptions.Create(FCaps); OpenDialog.InitialDir := ReadProfile(OpenDialog.Tag); SaveDialog.InitialDir := ReadProfile(SaveDialog.Tag); @@ -196,20 +257,45 @@ begin if not ComboBoxSelect(cbOutputDevice, ReadProfile(cbOutputDevice.Tag)) then cbOutputDevice.ItemIndex := 0; - FFirstShow := True; - FixAlign(sbOpenFile, 8); FixAlign(sbSaveFile, 8); - edInputOpts.Left := lbInputOpts.Left + lbInputOpts.Width + 8; - edOutputOpts.Left := lbOutputOpts.Left + lbOutputOpts.Width + 8; - FixAlign(edInputOpts, 8); - FixAlign(edOutputOpts, 8); - FixAlign(btnProcess, 8); - FixAlign(btnFilter, 16, btnProcess); FixAlign(edInputFile, 8, sbOpenFile); FixAlign(edOutputFile, 8, sbSaveFile); + FixAlign(cbInputLang, 8); + btnInputOpts.Left := lbInputOpts.Left + lbInputOpts.Width + 8; + edInputOpts.Left := btnInputOpts.Left + btnInputOpts.Width + 4; + edInputOpts.Width := cbInputLang.Left - edInputOpts.Left - 4; + + FixAlign(cbOutputLang, 8); + btnOutputOpts.Left := lbOutputOpts.Left + lbOutputOpts.Width + 8; + edOutputOpts.Left := btnOutputOpts.Left + btnOutputOpts.Width + 4; + edOutputOpts.Width := cbOutputLang.Left - edOutputOpts.Left - 4; + + FixAlign(btnProcess, 8); + FixAlign(btnFilter, 16, btnProcess); + edInputFile.Text := ReadProfile(edInputFile.Tag); + + cbInputLang.ItemIndex := 0; + cbOutputLang.ItemIndex := 0; + + Application.OnIdle := Self.DoOnIdle; + + gbInput.Caption := '>>> ' + _('Input'); + gbOutput.Caption := '<<< ' + _('Output'); + + chbInputDevice.Caption := '[' + chbInputDevice.Caption + ']'; + chbOutputDevice.Caption := '[' + chbOutputDevice.Caption + ']'; +end; + +procedure TfrmMain.LoadLanguages; +begin + FLang := TStringList.Create; + + DefaultInstance.GetListOfLanguages('default', FLang); + if (FLang.IndexOf('en') < 0) then FLang.Add('en'); + acFileChangeLanguage.Visible := (FLang.Count > 1); end; procedure TfrmMain.LoadFileFormats; @@ -218,12 +304,23 @@ var begin l := TStringList.Create; try - gpsbabel('-^2', l); + + if (gpsbabel_vfmt >= '001.002.008') then + gpsbabel('-^3', l) + else if (gpsbabel_vfmt >= '001.002.005') then + gpsbabel('-^2', l) + else begin + MessageDlg(_('The file "gpsbabel.exe" found in current directory is too old!'), + mtError, [mbOK], 0); + Halt(1); + end; + FCaps.List := l; - InitCombo(cbInputFormat, True, False); - InitCombo(cbOutputFormat, False, False); + FOpts.List := l; InitCombo(cbInputFormatDevice, False, True); InitCombo(cbOutputFormatDevice, True, True); + InitCombo(cbInputFormat, True, False); + InitCombo(cbOutputFormat, False, False); finally l.Free; end; @@ -232,6 +329,7 @@ end; procedure TfrmMain.FormShow(Sender: TObject); begin if not(FFirstShow) then Exit; + FFirstShow := False; PostMessage(SELF.Handle, WM_STARTUP, 0, 0); // keep sure our window is visible end; @@ -239,6 +337,7 @@ end; procedure TfrmMain.WMSTARTUP(var Msg: TMessage); begin LoadVersion; + EnableOptions(gpsbabel_vfmt); LoadFileFormats; // ? valid README form @@ -246,7 +345,7 @@ begin acHelpReadme.Enabled := (frmReadme.Memo.Lines.Count > 0); end; -procedure TfrmMain.InitCombo(Target: TComboBox; ForRead, ForDevice: Boolean); +procedure TfrmMain.InitCombo(Target: TComboBox; IsInput, ForDevice: Boolean); var i: Integer; OK: Boolean; @@ -257,7 +356,7 @@ begin if (ForDevice and not(FCaps.IsDevice(i))) then Continue; if not(ForDevice) and not FCaps.IsFile(i) then Continue; - if (ForRead) then + if (IsInput) then OK := FCaps.CanReadAny(i) else OK := FCaps.CanWriteAny(i); @@ -268,7 +367,7 @@ begin s := ReadProfile(Target.Tag); ComboBoxSelect(Target, s); - ComboChange(Target); + ComboBoxChanged(Target.Text, IsInput, not(ForDevice)); end; procedure TfrmMain.OpenButtonClick(Sender: TObject); @@ -286,22 +385,24 @@ begin if not SELF.OpenDialog.Execute then Exit; edInputFile.Text := OpenDialog.FileName; + CheckInput; end; -procedure TfrmMain.ComboChange(Sender: TObject); +procedure TfrmMain.ComboBoxChanged(const Format: string; IsInput, IsFile: Boolean); var caps: Integer; ext: string; + ac: TAction; begin - caps := FCaps.GetCaps(TComboBox(Sender).Text); - ext := FCaps.GetExt(TComboBox(Sender).Text); - if FOutHandmade and (ext = '') then + caps := FCaps.GetCaps(Format); + ext := FCaps.GetExt(Format); + if IsFile and FOutHandmade and (ext = '') then begin ext := SysUtils.ExtractFileExt(edOutputFile.Text); if (ext <> '') and (ext[1] = '.') then Delete(ext, 1, 1); end; - if (Sender = cbInputFormat) then + if IsInput then begin wptInputOK.Enabled := (caps and 1 <> 0); trkInputOK.Enabled := (caps and 4 <> 0); @@ -312,13 +413,44 @@ begin wptOutputOK.Enabled := (caps and 2 <> 0); trkOutputOK.Enabled := (caps and 8 <> 0); rteOutputOK.Enabled := (caps and 32 <> 0); - if (edOutputFile.Text <> '') then + if IsFile and (edOutputFile.Text <> '') and (edOutputFile.Text <> '-') then begin if (ext <> '') then FOutHandmade := False; edOutputFile.Text := SysUtils.ChangeFileExt(edOutputFile.Text, '.' + ext); end; end; + CheckInput; + + if IsInput then + begin + edInputOpts.Text := ''; + edInputOpts.Items.Clear; + + ac := acOptionsSourceFormat; + acOptionsSourceFormat.Caption := _('Input') + ': ' + Format; + btnInputOpts.Caption := ''; +// ImageList1.GetBitmap(11, btnInputOpts.Glyph); + end + else begin + edOutputOpts.Text := ''; + edOutputOpts.Items.Clear; + + ac := acOptionsTargetFormat; + acOptionsTargetFormat.Caption := _('Output') + ': ' + Format; + btnOutputOpts.Caption := ''; +// ImageList1.GetBitmap(11, btnOutputOpts.Glyph); + end; + + ac.Enabled := FOpts.HasFormatOpts(Format); + if ac.Enabled then + begin + ac.Hint := SysUtils.Format(_('Select and edit options for "%s"'), [Format]); + end + else + begin + ac.Hint := SysUtils.Format(_('No options available for "%s"'), [Format]); + end; end; procedure TfrmMain.edInputFileChange(Sender: TObject); @@ -381,6 +513,7 @@ begin if not SELF.SaveDialog.Execute then Exit; edOutputFile.Text := SaveDialog.FileName; + CheckInput; end; procedure TfrmMain.acConvertExecute(Sender: TObject); @@ -395,101 +528,147 @@ var Fatal: Boolean; begin - cmdline := ''; + btnProcess.Enabled := False; + try + acFinalizeDropDownsExecute(nil); - if chbInputDevice.Checked then - IFormat := FCaps.GetName(cbInputFormatDevice.Text) - else - IFormat := FCaps.GetName(cbInputFormat.Text); - if chbOutputDevice.Checked then - OFormat := FCaps.GetName(cbOutputFormatDevice.Text) - else - OFormat := FCaps.GetName(cbOutputFormat.Text); + cmdline := ''; - if cbWaypoints.Checked then cmdline := cmdline + ' -w'; - if cbRoutes.Checked then cmdline := cmdline + ' -r'; - if cbTracks.Checked then cmdline := cmdline + ' -t'; + if chbInputDevice.Checked then + IFormat := FCaps.GetName(cbInputFormatDevice.Text) + else + IFormat := FCaps.GetName(cbInputFormat.Text); + if chbOutputDevice.Checked then + OFormat := FCaps.GetName(cbOutputFormatDevice.Text) + else + OFormat := FCaps.GetName(cbOutputFormat.Text); - if mnuSynthesizeShortNames.Checked then cmdline := cmdline + ' -s'; + if cbWaypoints.Checked then cmdline := cmdline + ' -w'; + if cbRoutes.Checked then cmdline := cmdline + ' -r'; + if cbTracks.Checked then cmdline := cmdline + ' -t'; - if chbInputDevice.Checked then - s := SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':' - else begin - s := edInputFile.Text; - if not(FileExists(s)) then - raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]); - s := '"' + s + '"'; - end; + if mnuSynthesizeShortNames.Checked then cmdline := cmdline + ' -s'; - if (Trim(edInputOpts.Text) <> '') then - cmdline := Format('%s -i %s,%s -f %s', - [cmdline, IFormat, Trim(edInputOpts.Text), s]) - else - cmdline := Format('%s -i %s -f %s', - [cmdline, IFormat, s]); + if chbInputDevice.Checked then + s := SysUtils.AnsiLowerCase(cbInputDevice.Text) + ':' + else begin + s := edInputFile.Text; + if not(FileExists(s)) then + raise eGPSBabelError.CreateFmt(_('File %s not found.'), [s]); + s := '"' + s + '"'; + end; - cmdline := cmdline + frmFilter.CmdLine; + // Input character set - if (chbOutputDevice.Checked) then - s := cbOutputDevice.Text + ':' - else begin - s := edOutputFile.Text; + if acOptionsEnableCharactersetTransformation.Checked and + (cbInputLang.ItemIndex > 0) then + cmdline := Format('%s -c %s', + [cmdline, cbInputLang.Text]); - if FileExists(s) then - begin - if (Windows.MessageBox(SELF.Handle, - PChar(Format(_('File "%s" exists ! Overwrite ?'), [s])), - PChar(_('Warning')), MB_YESNO) <> IDYES) then Exit; - end - else + if (Trim(edInputOpts.Text) <> '') then + cmdline := Format('%s -i %s,%s -f %s', + [cmdline, IFormat, Trim(edInputOpts.Text), s]) + else + cmdline := Format('%s -i %s -f %s', + [cmdline, IFormat, s]); + + if mnuOptionsForceDataType.Checked then begin - str := TFileStream.Create(s, fmCreate); - str.Free; + s := ''; + if not(cbWaypoints.Checked) then + s := s + ',waypoints'; + if not(cbRoutes.Checked) then + s := s + ',routes'; + if not(cbTracks.Checked) then + s := s + ',tracks'; + if (s <> '') then + cmdline := Format('%s -x nuketypes%s', [cmdline, s]); end; - s := '"' + s + '"'; - end; - if (Trim(edOutputOpts.Text) <> '') then - cmdline := Format('%s -o %s,%s -F %s', - [cmdline, OFormat, Trim(edOutputOpts.Text), s]) - else - cmdline := Format('%s -o %s -F %s', - [cmdline, OFormat, s]); - - while (cmdline[1] = ' ') do System.Delete(cmdline, 1, 1); + // Add filter options - AddToOutput('gpsbabel.exe ' + cmdline); + if (frmFilter <> nil) then + cmdline := cmdline + frmFilter.CmdLine; - list := TStringList.Create; - try - CSave := Cursor; - Cursor := crHourGlass; - Application.ProcessMessages; - Sleep(50); + // Output character set - if not gpsbabel(cmdline, list, @Fatal) then - raise eGPSBabelError.Create(_('Could not run "gpsbabel.exe"!')); + if acOptionsEnableCharactersetTransformation.Checked and + (cbOutputLang.ItemIndex > 0) then + cmdline := Format('%s -c %s', + [cmdline, cbOutputLang.Text]); - if (list.Count > 0) then + if (chbOutputDevice.Checked) then begin - AddToOutput(''); - AddToOutput(string(list.GetText)); + if (cbOutputDevice.Text = 'SCREEN') then + s := '-' + else + s := cbOutputDevice.Text + ':' + end + else begin + s := edOutputFile.Text; + + if (s <> '-') then + begin + if FileExists(s) then + begin + if (Windows.MessageBox(SELF.Handle, + PChar(Format(_('File "%s" exists ! Overwrite ?'), [s])), + PChar(_('Warning')), MB_YESNO) <> IDYES) then Exit; + end + else + begin + str := TFileStream.Create(s, fmCreate); + str.Free; + end; + s := '"' + s + '"'; + end + else + s := '-'; end; - if (Fatal) then - MessageBox(SELF.Handle, - PChar(_('Sorry, gpsbabel.exe reported problems!')), - PChar(_('Error')), MB_OK) + if (Trim(edOutputOpts.Text) <> '') then + cmdline := Format('%s -o %s,%s -F %s', + [cmdline, OFormat, Trim(edOutputOpts.Text), s]) else - MessageBox(SELF.Handle, - PChar(Format(_('Converted successfully from "%s" to "%s".'), [IFormat, OFormat])), - PChar(_('Success')), MB_OK); + cmdline := Format('%s -o %s -F %s', + [cmdline, OFormat, s]); - finally + while (cmdline[1] = ' ') do System.Delete(cmdline, 1, 1); + + s := 'gpsbabel.exe ' + cmdline; + AddToOutput(s); - Cursor := CSave; - list.Free; + list := TStringList.Create; + try + CSave := Cursor; + Cursor := crHourGlass; + Application.ProcessMessages; + Sleep(50); + if not gpsbabel(cmdline, list, @Fatal, False) then + raise eGPSBabelError.Create(_('Could not run "gpsbabel.exe"!')); + + if (list.Count > 0) then + begin + AddToOutput(''); + AddToOutput(string(list.GetText)); + end; + + if (Fatal) then + MessageDlg(_('Sorry, gpsbabel.exe reported problems!'), mtError, [mbOK], 0) + else + MessageDlg(Format(_('Converted successfully from "%s" to "%s".'), [IFormat, OFormat]), + mtInformation, [mbOK], 0); + + finally + + Cursor := CSave; + list.Free; + + end; + + finally + btnProcess.Enabled := True; end; end; @@ -500,6 +679,8 @@ end; procedure TfrmMain.acFilterSelectExecute(Sender: TObject); begin + if (frmFilter = nil) then + Application.CreateForm(TfrmFilter, frmFilter); if not(frmFilter.ShowModal = mrOk) then Exit; end; @@ -521,10 +702,35 @@ end; procedure TfrmMain.LoadVersion; var - l: TStrings; + l, l2: TStringList; i: Integer; s: string; + cx: PChar; + + procedure SpaceDelimited(const str: string; list: TStrings); + var + s: string; + cin, cend, cx: PChar; + begin + s := Trim(str); + cin := PChar(s); + cend := cin + StrLen(cin); + while (cin < cend) do + begin + while (cin^ = ' ') do cin := cin + 1; + cx := StrScan(cin, ' '); + if (cx = nil) then cx := cend; + cx^ := #0; + list.Add(string(cin)); + cin := cx + 1; + end; + end; + begin + gpsbabel_major := 0; + gpsbabel_minor := 0; + gpsbabel_release := 0; + l := TStringList.Create; try if not gpsbabel('-V', l) then Exit; @@ -534,9 +740,32 @@ begin s := Trim(l.Strings[i]); if (Copy(AnsiUpperCase(s), 1, 8) = 'GPSBABEL') then begin - stbMain.Panels[0].Text := s; - stbMain.Panels[0].Width := stbMain.Canvas.TextWidth(s) + - Trunc((Length(s)* 1.5)); + l2 := TStringList.Create; + try + SpaceDelimited(s, l2); + gpsbabel_version := l2[2]; + cx := PChar(gpsbabel_version); + gpsbabel_major := atoi(cx); + cx := StrScan(cx, '.'); + if (cx <> nil) then + begin + gpsbabel_minor := atoi(cx + 1); + cx := StrScan(cx + 1, '.'); + if (cx <> nil) then + gpsbabel_release := atoi(cx + 1); + end; + + gpsbabel_vfmt := Format('%3.3d.%3.3d.%3.3d', [ + gpsbabel_major, gpsbabel_minor, gpsbabel_release]); + + s := Format(_('GPSBabel, version %s'), [gpsbabel_version]); + stbMain.Panels[0].Text := s; + stbMain.Panels[0].Width := stbMain.Canvas.TextWidth(s) + + Trunc((Length(s)* 1.5)); + Break; + finally + l2.Free; + end; end; end; @@ -547,6 +776,8 @@ end; procedure TfrmMain.acHelpAboutExecute(Sender: TObject); begin + if (frmAbout = nil) then + Application.CreateForm(TfrmAbout, frmAbout); frmAbout.ShowModal; end; @@ -558,15 +789,20 @@ begin begin edInputFile.Visible := False; sbOpenFile.Visible := False; + cbInputFormat.Visible := False; cbInputDevice.Visible := True; cbInputFormatDevice.Visible := True; + lbInputFile.Caption := _('Port'); end else begin + cbInputFormat.Visible := True; cbInputFormatDevice.Visible := False; cbInputDevice.Visible := False; edInputFile.Visible := True; + cbInputDevice.Visible := False; sbOpenFile.Visible := True; + lbInputFile.Caption := _('File'); end; CheckInput; end; @@ -602,17 +838,21 @@ begin if TCheckBox(Sender).Checked then begin - edOutputFile.Visible := False; - sbSaveFile.Visible := False; cbOutputFormatDevice.Visible := True; cbOutputDevice.Visible := True; + edOutputFile.Visible := False; + sbSaveFile.Visible := False; + cbOutputFormat.Visible := False; + lbOutputFile.Caption := _('Port'); end else begin - cbOutputDevice.Visible := False; - cbOutputFormatDevice.Visible := False; + cbOutputFormat.Visible := True; sbSaveFile.Visible := True; edOutputFile.Visible := True; + cbOutputDevice.Visible := False; + cbOutputFormatDevice.Visible := False; + lbOutputFile.Caption := _('File'); end; CheckInput; end; @@ -632,5 +872,238 @@ begin FOutHandmade := True; end; +procedure TfrmMain.cbInputFormatDeviceChange(Sender: TObject); +begin + ComboBoxChanged(cbInputFormatDevice.Text, True, False); +end; + +procedure TfrmMain.cbOutputFormatDeviceChange(Sender: TObject); +begin + ComboBoxChanged(cbOutputFormatDevice.Text, False, False); +end; + +procedure TfrmMain.cbInputFormatChange(Sender: TObject); +begin + ComboBoxChanged(cbInputFormat.Text, True, True); +end; + +procedure TfrmMain.cbOutputFormatChange(Sender: TObject); +begin + ComboBoxChanged(cbOutputFormat.Text, False, True); +end; + +procedure TfrmMain.acOptionsSourceFormatExecute(Sender: TObject); +begin + if chbInputDevice.Checked then + HandleOptions(cbInputFormatDevice.Text, edInputOpts, True) + else + HandleOptions(cbInputFormat.Text, edInputOpts, True) +end; + +procedure TfrmMain.DoOnIdle(Sender: TObject; var Done: Boolean); +begin + inherited; + acFileClearMemo.Enabled := (memoOutput.Lines.Count > 0); + Done := True; +end; + +procedure TfrmMain.EnableOptions(const Version: string); +begin + if (Version >= '001.002.008') then + mnuOptionsForceDataType.Enabled := True; + if (version >= '001.002.007') then + acOptionsEnableCharactersetTransformation.Enabled := True; +end; + +function TfrmMain.HandleOptions(const Format: string; AObject: TObject; IsInput: Boolean): Boolean; +var + s: string; + ok: Boolean; +begin + s := GetStrProp(AObject, 'Text'); + if HandleOptionsDlg(Format, s, IsInput) then + begin + SetStrProp(AObject, 'Text', s); + Result := True; + end + else + Result := False; +end; + +function TfrmMain.HandleOptionsDlg(const Format: string; var str: string; IsInput: Boolean): Boolean; +begin + Application.CreateForm(TfrmOptions, frmOptions); + try + frmOptions.Caption := SysUtils.Format(_('Options for "%s"'), [Format]); + frmOptions.FIsInput := IsInput; + frmOptions.Opts := FOpts.FormatOpts(Format); + frmOptions.OptsStr := str; + Result := (frmOptions.ShowModal = mrOk); + if (Result) then + begin + str := frmOptions.OptsStr; + PostMessage(Self.Handle, WM_OPTIONS_CHANGED, 0, 0); + end; + finally + frmOptions.Release; + end; +end; + +procedure TfrmMain.acOptionsTargetFormatExecute(Sender: TObject); +begin + if chbOutputDevice.Checked then + HandleOptions(cbOutputFormatDevice.Text, edOutputOpts, False) + else + HandleOptions(cbOutputFormat.Text, edOutputOpts, False); +end; + +procedure TfrmMain.btnInputOptsClick(Sender: TObject); +begin + acOptionsSourceFormat.Execute; +end; + +procedure TfrmMain.acFileClearMemoExecute(Sender: TObject); +begin + memoOutput.Clear; +end; + +procedure TfrmMain.acFinalizeDropDownsExecute(Sender: TObject); +var + i, j: Integer; + c: TComponent; + cb: TComboBox; +begin + for i := 0 to ComponentCount - 1 do + begin + c := Components[i]; + if not(c is TComboBox) then Continue; + cb := Pointer(c); + if (cb.Style <> csDropDown) or (cb.Text = '') then Continue; + j := cb.Items.IndexOf(cb.Text); + if (j < 0) then + cb.Items.Insert(0, cb.Text); + end; +end; + +procedure TfrmMain.WMOPTIONSCHANGED(var Msg: TMessage); +begin + acFinalizeDropDowns.Execute; +end; + +procedure TfrmMain.mnuOptionsForceDataTypeClick(Sender: TObject); +begin + mnuOptionsForceDataType.Checked := not(mnuOptionsForceDataType.Checked); +end; + +procedure TfrmMain.acOptionsEnableCharactersetTransformationExecute( + Sender: TObject); +begin + acOptionsEnableCharactersetTransformation.Checked := not ( + acOptionsEnableCharactersetTransformation.Checked); + + cbInputLang.Enabled := acOptionsEnableCharactersetTransformation.Checked; + cbOutputLang.Enabled := acOptionsEnableCharactersetTransformation.Checked; +end; + +procedure TfrmMain.acFileOutputToScreenExecute(Sender: TObject); +begin + if (chbOutputDevice.Checked) then + begin + chbOutputDevice.Checked := False; + chbOutputDeviceClick(chbOutputDevice); + Application.ProcessMessages; + end; + + acFileOutputToScreen.Checked := not (acFileOutputToScreen.Checked); + if acFileOutputToScreen.Checked then + begin + chbOutputDevice.Enabled := False; + HistoryChanged(edOutputFile); + edOutputFile.Text := '-'; + edOutputFile.Enabled := False; + sbSaveFile.Enabled := False; + end + else + begin + chbOutputDevice.Enabled := True; + edOutputFile.Enabled := True; + HistoryChanged(edOutputFile, True); + sbSaveFile.Enabled := True; + end; + CheckInput; +end; + +procedure TfrmMain.HistoryChanged(Box: TComboBox; Swap: Boolean); +var + index: Integer; + item: string; +begin + item := Trim(Box.Text); + if (item <> '') then + begin + index := Box.Items.IndexOf(item); + if (index < 0) then + Box.Items.Insert(0, item) + else + Box.Items.Move(index, 0); + end; + if (swap and (Box.Items.Count > 1)) then + Box.ItemIndex := 1; +end; + +procedure TfrmMain.acDebugCreatePoExecute(Sender: TObject); +var + l: TStringList; + i, j, len: Integer; + s: string; + f: TFileStream; +begin + l := TStringList.Create; + try + FOpts.DebugGetHints(l); + f := TFileStream.Create('options\options.inc', fmCreate); + try + s := '{gnugetext: scan-all text-domain=''options''}'#13#10#13#10; + f.Write(PChar(s)^, Length(s)); + s := 'const'#13#10; + f.Write(PChar(s)^, Length(s)); + + for i := 0 to l.Count - 1 do + begin + s := l.Strings[i]; + len := Length(s); + for j := len downto 1 do + begin + if (s[j] = '''') then + begin + Insert('''', s, j); + end; + end; + s := Format('resourcestring option_%d=''%s'';'#13#10, [i, s]); + f.Write(PChar(s)^, Length(s)); + end; + + s := #13#10'{gnugettext: reset }'#13#10; + f.Write(PChar(s)^, Length(s)); + finally + f.Free; + end; + finally + l.Free; + end; +end; + +procedure TfrmMain.acFileChangeLanguageExecute(Sender: TObject); +var + i: Integer; + s: string; +begin + for i := 0 to FLang.Count - 1 do + begin + s := FLang.Strings[i]; + if (s = '') then + Halt(1); + end; +end; + end. - \ No newline at end of file diff --git a/gpsbabel/win32/gui-2/readme.dfm b/gpsbabel/win32/gui-2/readme.dfm index efc9d171fc4eb6f0275067f2a29548a688a31f40..3036ad2a07926f655b66e75feb1d84e4a9a5c2e1 100644 GIT binary patch delta 132 zcmeBSUC%1`pNk>HEyy>>)zQV*mBBz@_C&$UJY3$Xl>tSmWtpkvoD-jfigWts0YzN$ z%k$W|-SUfap`6KHEyy>>)zQV*mBB!uVxr*Xi625I$1u7xwoG2a7^2P=keHX6W60u@ znpVQZz#Niaz}&*f8lIU_lEKWw#O9HjnVwO?q%v8N$()1TDYL|>B+qbi98(|wT~r%> diff --git a/gpsbabel/win32/gui-2/readme.pas b/gpsbabel/win32/gui-2/readme.pas index d4b1a6b50..30ff0db24 100644 --- a/gpsbabel/win32/gui-2/readme.pas +++ b/gpsbabel/win32/gui-2/readme.pas @@ -21,16 +21,19 @@ unit readme; interface uses + gnugettextDx, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons; type TfrmReadme = class(TForm) Memo: TMemo; - Panel1: TPanel; - BitBtn1: TBitBtn; + pnBottom: TPanel; + btnOK: TBitBtn; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); + procedure FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); private { Private declarations } FStr: TStream; @@ -52,6 +55,7 @@ end; procedure TfrmReadme.FormCreate(Sender: TObject); begin + btnOK.Left := pnBottom.Width - btnOK.Width - 8; try FStr := TFileStream.Create('README', fmOpenRead); Memo.Lines.LoadFromStream(FStr); @@ -60,4 +64,11 @@ begin end; end; +procedure TfrmReadme.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (Key = 27) then + ModalResult := mrOK; +end; + end. diff --git a/gpsbabel/win32/gui-2/utils.pas b/gpsbabel/win32/gui-2/utils.pas index f9e44cbce..d3de32572 100644 --- a/gpsbabel/win32/gui-2/utils.pas +++ b/gpsbabel/win32/gui-2/utils.pas @@ -25,24 +25,27 @@ unit utils; interface uses - gnugettextD4, - Windows, SysUtils, Classes, Registry; + gnugettext, + Windows, SysUtils, Classes, Registry, ShellAPI; type PBoolean = ^Boolean; function gpsbabel(const CommandLine: string; Output: TStrings; - Fatal: PBoolean = nil): Boolean; + Fatal: PBoolean = nil; OEMStrings: Boolean = True): Boolean; function GetShortName(const PathName: string): string; procedure StoreProfile(const Tag: Integer; const Value: string); -function ReadProfile(const Tag: Integer): string; +function ReadProfile(const Tag: Integer; const Default: string = ''): string; overload; +function ReadProfile(const Name: string; const Default: string = ''): string; overload; function BackupProperties(Instance: TObject; Properties: TStrings; Backup: TStringList): Boolean; procedure RestoreProperties(Instance: TObject; Backup: TStringList); procedure FixStaticText(AComponent: TComponent); +procedure WinOpenFile(const Name: string); + implementation uses @@ -60,7 +63,13 @@ begin end; function gpsbabel(const CommandLine: string; Output: TStrings; - Fatal: PBoolean = nil): Boolean; + Fatal: PBoolean; OEMStrings: Boolean): Boolean; + +// bigger buffer_size speeds up conversion to screen + +const + BUFFER_SIZE = $20000; + var hRead, hWrite: THandle; ProcessInfo: TProcessInformation; @@ -69,22 +78,33 @@ var sCmd: string; BytesRead, BytesDone: DWORD; - buffer: packed array[0..512] of Char; + buffer_string: string; + buffer: PChar; Error: DWORD; Wait_Result: DWORD; s: string; begin Result := False; + + // strings are released automatical + // so we don't need a try/finally construct for our read buffer + + SetLength(buffer_string, BUFFER_SIZE); + buffer := PChar(buffer_string); + if (Fatal <> nil) then Fatal^ := False; - sCmd := SysUtils.Format('%s %s ', [gpsbabel_exe, CommandLine]); + if (Copy(CommandLine, 1, 1) = '~') then + sCmd := System.Copy(CommandLine, 2, Length(CommandLine) - 1) + else + sCmd := SysUtils.Format('%s %s ', [gpsbabel_exe, CommandLine]); - SecurityAttr.nLength := sizeof (TSECURITYATTRIBUTES); + SecurityAttr.nLength := sizeof(TSECURITYATTRIBUTES); SecurityAttr.bInheritHandle := true; SecurityAttr.lpSecurityDescriptor := nil; - if not CreatePipe(hRead, hWrite, @SecurityAttr, 0) then + if not CreatePipe(hRead, hWrite, @SecurityAttr, $8000) then raise eGPSBabelError.Create(_('Error WINAPI: Could not create "NamedPipe"!')); try @@ -115,16 +135,21 @@ begin s := ''; repeat - Wait_Result := WaitforSingleObject(ProcessInfo.hProcess, 50); + Wait_Result := WaitforSingleObject(ProcessInfo.hProcess, 10); if PeekNamedPipe(hRead, nil, 0, nil, @BytesRead, nil) then begin - Application.ProcessMessages; + if (BytesRead > 0) then Application.ProcessMessages; while (BytesRead > 0) do begin - ReadFile(hRead, Buffer, SizeOf(buffer)-1, BytesDone, nil); - buffer[BytesDone] := #0; - s := s + string(buffer); - Dec(BytesRead, BytesDone); + ReadFile(hRead, buffer^, BUFFER_SIZE - 1, BytesDone, nil); + if (BytesDone > 0) then + begin + buffer[BytesDone] := #0; + if OEMStrings then + OemToCharBuff(buffer, buffer, BytesDone); + s := s + string(buffer); + Dec(BytesRead, BytesDone); + end; end; end; until (Wait_Result = WAIT_OBJECT_0); @@ -167,24 +192,28 @@ begin end; end; -function ReadProfile(const Tag: Integer): string; +function ReadProfile(const Tag: Integer; const Default: string): string; // overload; var - reg: TRegistry; str: string; begin if (Tag <= 0) or (Tag > High(Profile)) then Exit; - str := Profile[Tag]; + Result := ReadProfile(str, Default); +end; +function ReadProfile(const Name: string; const Default: string = ''): string; // overload; +var + reg: TRegistry; +begin reg := TRegistry.Create; try reg.RootKey := HKEY_CURRENT_USER; if reg.OpenKey('\SOFTWARE\GPSBabel', True) then begin try - Result := reg.ReadString(str); + Result := reg.ReadString(Name); except - Result := ''; + Result := Default; end; end; finally @@ -192,7 +221,6 @@ begin end; end; - function BackupProperties(Instance: TObject; Properties: TStrings; Backup: TStringList): Boolean; var List: TStringList; @@ -233,4 +261,9 @@ begin end; end; +procedure WinOpenFile(const Name: string); +begin + ShellExecute(0, 'open', PChar(Name), nil, '', 0); +end; + end. -- 2.30.2